我使用的是python单元测试库(unittest)和selenium webdriver。我正在尝试通过元素的名称来查找元素。大约一半的时间,测试抛出NoSuchElementException,而另一半的时间则不抛出异常。
我想知道这是否与selenium webdriver没有等待足够长的时间来加载页面有关。
发布于 2013-05-25 00:54:56
driver = webdriver.WhatEverBrowser()
driver.implicitly_wait(60) # This line will cause it to search for 60 seconds它只需要在你的代码中插入一次(我通常在创建webdriver对象后立即插入)
例如,如果您的页面由于某种原因需要30秒才能加载(购买一个新服务器),而元素是最后出现在页面上的内容之一,那么它几乎只会一遍又一遍地检查元素是否在那里60秒,如果找不到它,它就会抛出异常。
还要确保你的作用域是正确的,即:如果你关注的是一个框架,而你正在寻找的元素不在那个框架中,它就找不到它。
发布于 2013-05-25 00:43:54
我也看到了。我要做的就是等它结束。
您可以尝试:
while True:
try:
x = driver.find_by_name('some_name')
break
except NoSuchElementException:
time.sleep(1)
# possibly use driver.get() again if needed另外,尝试使用pip install --update selenium将selenium更新到最新版本
发布于 2013-05-25 22:23:10
我把我的钱放在框架上,就像我之前遇到的类似问题一样:)
再次检查您的html,并检查您是否正在处理frame。如果是,那么切换到正确的帧将能够定位该元素。
Python
driver.switch_to_frame("frameName")然后搜索元素。
如果没有,请尝试按照其他人的建议设置等待时间。
https://stackoverflow.com/questions/16739319
复制相似问题