当前位置: 首页 > 知识库问答 >
问题:

Python是Selenium时代。sleep()隐式工作_wait()和WebDriverWait失败

宗建章
2023-03-14

我在使用selenium和python通过id定位Web元素时遇到问题。

这只是页面上的一个元素,我可以找到所有其他元素。

如果我试着用

driver.find_element_by_id(“btUpdate”)。单击()

find_element_by_id它生成一个

< code > selenium . common . exceptions . nosuchelementexception:消息:没有这样的元素:找不到元素:

如果我添加一个

driver.implicitly_wait(20)

如果我使用:

WebDriverWait(driver, 20).until(
    EC.element_to_be_clickable((By.ID, id)))

然而,如果我把一个简单的time.sleep(2)放在我的find_element_by_id之前,它就可以工作了。

当其他人都失败时,为什么睡眠会起作用?它将在那里等待20秒,使用等待命令,但仍然无法定位元素。再睡2秒钟,它就会发现一切都很好。

有什么想法吗?

编辑以获取更多信息

使用ChromeDriver 78.0.3904.70的铬

是的,杰夫C你是对的,当我使用Web驱动程序时,它确实失败了,并有一个不同的错误。

selenium.common.exceptions.TimeoutException: Message: 

我也试过visibility_of_element_located但得到相同的TimeoutException。

共有1个答案

程景胜
2023-03-14

您可以尝试等待一个不同的条件,而不是element_to_be_clickablevisibility_of_element_ located在这里可能会有所帮助。

element = WebDriverWait(driver, 10).until(
        EC.visibility_of_element_located((By.ID, "btUpdate")))

element.click()

有趣的问题,奇怪的是,implicitly_wait在这里不适合你。

 类似资料:
  • 但是这不起作用,正如bec所说的,驱动程序检测到web元素立即存在(并且可见和显示),但是单击不会起作用,除非我等待3秒钟。 同样,我不能使用: 出于同样的原因(这只在所述元素在3秒前不可点击/可见时才会起作用,但就而言--它立即可见) 谢了!

  • 伙计们,我已经开始工作的硒网络驱动程序。你可以假设我是个初学者。目前,我在代码(C#)中实现隐式wait命令时遇到了困难。它没有正常工作,并且由于没有找到元素而导致一个异常,但是当我添加“Thread.Sleep(3000)”时,代码得到了完美无缺的执行。我一直在互联网上寻找解决方案,但是无法解决问题。下面我提到了示例代码。 请注意,目前我不想使用显式等待,因为隐式将满足我的需要(如果它开始工作的

  • 尊敬的社区成员, 所以我在谷歌搜索右下方找到next按钮,下面是HTML代码: 我在python中使用了以下代码定位按钮并单击它: 一个小时前,所有的东西都在工作,我有点高兴,但现在它不能定位按钮,我感谢您的时间和帮助! 编辑:我打印出了谷歌页面源码,我注意到不知怎么的我被检测到了,有什么办法可以解决?

  • 我正在和selenium一起工作,刮一些数据。 有一个按钮在页面上,我正在点击说“Custom_Cols”。这个按钮为我打开了一个窗口,我可以在那里选择我的列。 我的问题是为什么新窗口上的元素不可见,即使我正在等待元素的可见。补充一下,我已经尝试增加延迟时间,但我还是会偶尔出现这个错误。 我的密码在这里

  • 问题内容: 我正在使用selenium来抓取一些数据。 我单击的页面上有一个按钮,说“ custom_cols”。此按钮为我打开一个窗口,从中可以选择列。 此新窗口有时需要一些时间才能打开(大约5秒钟)。所以我已经使用了 延迟为20秒。但是有时它无法在新窗口中选择查找元素,即使该元素可见。在其余时间中,这种情况仅发生十次一次。 我在其他地方也使用了相同的功能(WebDriverWait),并且可以

  • 问题内容: 我正在学习Java Maven Selenium。我想要在Selenium中使用这样的东西。 打开网站(例如https://www.facebook.com) 单击登录的电子邮件字段 等待20秒 输入我的电子邮件 这是我的简单代码: 该代码不起作用。它只会打开Facebook,单击电子邮件字段并输入我的电子邮件ID,而不是等待10秒钟才输入我的电子邮件。 问题答案: 并且无法正常工作,