Selenium 预期条件,等到元素可交互?

Posted

技术标签:

【中文标题】Selenium 预期条件,等到元素可交互?【英文标题】:Selenium Expected Conditions, Wait until element is interactable? 【发布时间】:2022-01-22 13:49:01 【问题描述】:

有没有办法绕过 selenium 中的 elementNotInteractable 异常?我用过

wait.until(ec.element_to_be_clickable())

但我的代码仍会在元素完全可交互之前尝试与它们进行交互。问题是我在定义等待时没有将延迟设置得足够高吗?或者有没有类似的功能

ec.element_to_be_interactable()

哪个检查元素是否可交互?

【问题讨论】:

您尝试与之交互的 html 元素以及该元素的 url。 不确定是否有更易访问的示例,但我正在尝试访问 TCGPlayer 卖家门户中的搜索栏,在更改搜索功能的下拉菜单。我不得不在 time.sleep() 中反复编写代码来绕过等待,因为使用 clickable 只会导致 selenium 崩溃和崩溃。 【参考方案1】:

element_to_be_clickable()

element_to_be_clickable() 是用于检查元素是否可见启用的期望,以便您可以click()它。


ElementNotInteractableException

不幸的是,没有具体的expected_conditions 和ElementNotInteractableException,它的发生可能有很多原因,其中一些是:

降低超时间隔。在这些情况下,您必须按如下方式增加 超时

wait = WebDriverWait(driver, 20)

选择并调用click() 外部/父元素而不是子元素。

一个典型的场景是定位 <input>,其中有一个相关的 <label> 元素。

【讨论】:

以上是关于Selenium 预期条件,等到元素可交互?的主要内容,如果未能解决你的问题,请参考以下文章

为啥可点击的预期条件不执行 click()?

Python selenium:等到元素可点击 - 不工作

selenium的显示等待和隐式等待区别

Python Selenium:等到元素不再陈旧?

如何等到 Selenium 中不再存在元素

Python Selenium:等到元素不再陈旧?