Selenium 元素定位不到(Unable to locate element)
問題描述:使用selenium進(jìn)行元素定位時,元素的定位信息是正確的,但是腳本執(zhí)行時,依舊會出現(xiàn)元素不存在的錯誤。
這個問題的原因在于,頁面有一個加載的過程,當(dāng)我們進(jìn)行元素定位時,需要頁面將該元素加載出來,如果元素沒有加載出來,那么即使定位方式是正確的,也會出現(xiàn)元素不存在的錯誤。
解決方案:
1.設(shè)置元素的顯示等待時間,等待該元素被找到或者超時(不太推薦,比較麻煩)
# 導(dǎo)入顯示等待的方法 以秒為單位
from selenium.webdriver.support.wait import WebDriverWait
# 導(dǎo)入判斷元素是否存在的方法
from selenium.webdriver.support import expected_conditions
# 第一個參數(shù)為實例化的瀏覽器驅(qū)動,第二個參數(shù)為的等待該元素的時長,第三個參數(shù)為輪詢定位該元素的時長, until用來等待該元素被找到
element = WebDriverWait(driver, 5, 0.5).until(
# visibility_of_element_located用來判斷元素是否存在
expected_conditions.visibility_of_element_located((by.ID, 'username'))
)
以上方法通過輪詢等待元素加載,直到元素被找到或者超時
2.設(shè)置驅(qū)動器的隱式等待時間,找不到元素時進(jìn)行等待,直到元素被找到或者超時(推薦)
# implicitly_wait用來設(shè)置瀏覽器驅(qū)動器的隱式等待時間,以秒為單位
driver.implicitly_wait(5)
以上方法在元素找不到時,進(jìn)行等待,直到元素被找到或者超時文章來源:http://www.zghlxwxcb.cn/news/detail-727310.html
3. 設(shè)置系統(tǒng)休眠時間,等待瀏覽器加載后繼續(xù)執(zhí)行(不推薦, 休眠暫停流程執(zhí)行,即使元素已經(jīng)出來了,也會休眠到設(shè)定時間之后執(zhí)行)
from time import sleep
# 以秒為單位
sleep(5)
以上方法添加到找不到元素的前面,進(jìn)行系統(tǒng)休眠,等待一段時間后查找文章來源地址http://www.zghlxwxcb.cn/news/detail-727310.html
到了這里,關(guān)于Selenium 元素定位不到(Unable to locate element)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!