首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium Webdriver - NoSuchElementExceptions

Selenium Webdriver - NoSuchElementExceptions
EN

Stack Overflow用户
提问于 2013-05-25 00:11:42
回答 7查看 9.1K关注 0票数 4

我使用的是python单元测试库(unittest)和selenium webdriver。我正在尝试通过元素的名称来查找元素。大约一半的时间,测试抛出NoSuchElementException,而另一半的时间则不抛出异常。

我想知道这是否与selenium webdriver没有等待足够长的时间来加载页面有关。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-05-25 00:54:56

代码语言:javascript
复制
driver = webdriver.WhatEverBrowser()
driver.implicitly_wait(60) # This line will cause it to search for 60 seconds

它只需要在你的代码中插入一次(我通常在创建webdriver对象后立即插入)

例如,如果您的页面由于某种原因需要30秒才能加载(购买一个新服务器),而元素是最后出现在页面上的内容之一,那么它几乎只会一遍又一遍地检查元素是否在那里60秒,如果找不到它,它就会抛出异常。

还要确保你的作用域是正确的,即:如果你关注的是一个框架,而你正在寻找的元素不在那个框架中,它就找不到它。

票数 12
EN

Stack Overflow用户

发布于 2013-05-25 00:43:54

我也看到了。我要做的就是等它结束。

您可以尝试:

代码语言:javascript
复制
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更新到最新版本

票数 5
EN

Stack Overflow用户

发布于 2013-05-25 22:23:10

我把我的钱放在框架上,就像我之前遇到的类似问题一样:)

再次检查您的html,并检查您是否正在处理frame。如果是,那么切换到正确的帧将能够定位该元素。

Python

代码语言:javascript
复制
driver.switch_to_frame("frameName")

然后搜索元素。

如果没有,请尝试按照其他人的建议设置等待时间。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16739319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档