python Selenium : Explicitly wait for one of two elements to be loaded

标签 python selenium

有没有一种方法可以让我等待两个元素之一加载到 selenium 中。我正在使用显式等待,到目前为止,还没有找到解决方案。

简单的做

WebDriverWait(driver,5).until(lambda driver : driver.find_element(By.ID,"a") or driver.find_element(By.ID,"b"))

好像不行。它只是寻找 id 为 ="a"的元素。

谢谢!

最佳答案

如果没有找到元素,

find_element 引发 NoSuchElementException 异常。

如果 id 为 a 的元素不存在,driver.find_element(By.ID,"a") 将引发异常并且 驱动程序。 find_element(By.ID,"b") 不会被执行。

解决该问题的一个简单方法是使用 find_elements,它返回空列表而不是引发异常:

WebDriverWait(driver,5).until(
    lambda driver: driver.find_elements(By.ID,"a") or driver.find_elements(By.ID,"b"))

关于 python Selenium : Explicitly wait for one of two elements to be loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27606026/

相关文章:

python - 如何修复 numpy 数组的错误维度

python - 从 。导入_方法 ImportError : cannot import name '_methods' in cx-freeze python

python - Boto3上传ServerSideEncryption

java - 如何使用 Java 更新 JSON 文件中的几个字段并再次读取具有更新值的 selenium 中的 JSON

google-chrome - 使用 Selenium 的 headless chrome 出现 "Cannot get automation extension"错误 (Ubuntu)

python - 尝试在 Python 中使用 Selenium 启动网页

google-chrome - Selenium :Chrome和contextMenu项目按下

python - Python 中的服务定位协议(protocol) (SLP) 绑定(bind)

python - Scrapy返回 "Crawled 0 pages"

python - 如何查找附加到一个或另一个类的元素? Selenium python