如何使Selenium WebDriver等到合并的预期条件?
基本上,Java的类似问题是asked和answered,但是这种方法OR
(docs)不适用于Python绑定({{3} }(在GitHub上)
我的回调非常慢,导致出现以下情况之一:
_report_success
的div _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绑定中?
答案 0 :(得分:2)
您可以将css_selector
用于OR
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#_report_success, #_report_error')))