解决网页元素无法定位(NoSuchElementException: Unable to locate element)的几种方法

1.可能元素加载未完成
元素加载没完成,同样的路径定位,每次测试结果确是不一样的,有时候抛出错误,有时候正常!这就比较蛋疼了,也就是说,和你的定位方法半毛钱关系没有,而很大程度上取决于你的电脑和网速!

1.解决方案A:添加两行代码
wait = ui.WebDriverWait(driver,10)
wait.until(lambda driver: driver.find_element_by_方法("定位路径自己来"))
WebDriverWait(driver,10)的意思是;10秒内每隔500毫秒扫描1次页面变化,当出现指定的元素后结束。driver是前面操作webdriver.firefox()的句柄

2解决方案B:使用while+try…except结合
下面来个例子,完整的可运行代码如下:

from selenium import webdriver
import time
import os

driver_item=webdriver.Firefox()
url="https://movie.douban.com/"
driver_item.get(url)

while 1:
    start = time.clock()
    try:
        driver_item.find_element_by_xpath("//div[@class='fliter-wp']/div/form/div/div/label[5]").click()
        print '已定位到元素'
        end=time.clock()
        break
    except:
        print "还未定位到元素!"

print '定位耗费时间:'+str(end-start)
3. 本身定位问题

xpath定位问题

你可能感兴趣的:(selenium)