定位網頁上某個按鈕時,總是報錯元素定位不到,具體如下:NoSuchElementException: Message: no such element: Unable to locate element
改了好幾種寫法,最終直接用 xpath helper 里獲取的內容填充進去,還是報錯,瞬間領悟了,原來不是 xpath 的問題,是因為腳本執行到這一行代碼時,對應頁面上的元素還沒加載完成,
導致定位不到,需要設置等待時間,舉個簡單的例子:
#coding:utf-8
from selenium import webdriver
import selenium.webdriver.support.ui as ui
dr = webdriver.Chrome()
dr.get('http://www.xxx.com')
wait = ui.WebDriverWait(dr,5)
wait.until(lambda driver: dr.find_element_by_xpath("//span[text()='查看']"))
dr.find_element_by_xpath("//span[text()='查看']").click()
標藍的代碼,表示會反復調用until中的函數,找到就返回,超過5秒就拋出Timeout異常。