定位网页上某个按钮时,总是报错元素定位不到,具体如下:NoSuchElementException: Message: no such element: Unable to locate element
不是 xpath 的问题,是因为脚本执行到这一行代码时,对应页面上的元素还没加载完成,
导致定位不到,需要设置等待时间,举个简单的例子:
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- import selenium.webdriver.support.ui as ui
-
- driver = webdriver.Chrome()
- driver.get('http://www.xxx.com')
- wait = ui.WebDriverWait(driver ,5)
- driver.find_element_by_xpath('//body').send_keys(Keys.PAGE_DOWN) # 发送PAGE_DOWN
- # 会反复调用until中的函数,找到就返回,超过5秒就抛出Timeout异常。
- wait.until(lambda driver: driver.find_element_by_xpath("//span[text()='提交']"))
- driver .find_element_by_xpath("//span[text()='提交']").click()