Selenium WebDriver wait until combined ExpectedConditions (AND, OR, NOT operators)
本问题已经有最佳答案,请猛点这里访问。
如何使Selenium WebDriver等到合并的预期条件?
基本上已经询问并回答了关于Java的类似问题,但是Python绑定没有这样的方法
我的回调很慢,导致出现以下情况之一:
-
如果所有内容均已正确加载,则id为
_report_success 的div -
如果发生任何故障,则id为
_report_error 的div
因此,我需要等到
另外,这些条件非常简单:
1 2 3 4 5 6 | 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中,合并后的版本如下所示:
1 2 3 4 | driverWait.until(ExpectedConditions.or( ExpectedConditions.presenceOfElementLocated(...), ExpectedConditions.presenceOfElementLocated(...) )); |
当然,我可以进行循环并以一定的间隔检查两者的存在(实际上就像在WebDriverWait.until中实现的那样),但是我正在寻找更优雅,更灵活的解决方案。毕竟,如果满足此类需求的方法存在于Java版本中,为什么它不在Python绑定中?
您可以将
1 | WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#_report_success, #_report_error'))) |