<分区> 分区>
如何让 Selenium WebDriver 等待组合预期条件?
基本上,Java 的类似问题是 asked和 answered ,但是这种方法 OR ( docs ) 不适用于 Python 绑定(bind)(GitHub 上的 expected_conditions.py)
我有一个非常慢的回调,导致以下情况之一:
- id=
_report_success的 div,如果一切都已正确加载 - id=
_report_error的 div,以防出现任何故障
所以,我需要等到 _report_success 或 _report_error 变得可见。
另外,这些条件非常简单:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '_report_success')))
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '_report_error')))
在 Java 中,组合版本如下所示:
driverWait.until(ExpectedConditions.or(
ExpectedConditions.presenceOfElementLocated(...),
ExpectedConditions.presenceOfElementLocated(...)
));
当然,我可以做一个循环并用一个时间间隔检查两者是否存在(实际上就像它在 WebDriverWait.until 中实现的那样),但我正在寻找更优雅和灵活的解决方案。毕竟,如果满足此类需求的方法存在于 Java 版本中,为什么它不存在于 Python 绑定(bind)中?
