python WebDriverWait中的逻辑运算符预期条件

ax6ht2ek  于 2024-01-05  发布在  Python
关注(0)|答案(2)|浏览(196)

我使用Python / Selenium提交一个表单,然后我让Web驱动程序等待下一个页面加载,这是通过使用class id的预期条件来实现的。
我的问题是,有两个页面可以显示,但他们不共享一个独特的元素(我可以找到),这是不是在原来的页面。一个页面有一个独特的类是mobile_txt_holder和其他可能的页面有一个类id的notfoundcopy我想使用一个等待,正在寻找mobile_txt_holdernotfoundcopy出现。
有没有可能将合并的两个预期条件合并到一个等待中?
我在寻找什么,但显然不会工作的基本思路:

  1. WebDriverWait(driver, 30).until(EC.presence_of_element_located(
  2. (By.CLASS_NAME, "mobile_txt_holder")))
  3. or .until(EC.presence_of_element_located((By.CLASS_NAME, "notfoundcopy")))

字符串
我真的只需要编程来等待下一个页面加载,这样我就可以解析源代码。
示例HTML:
<p class="notfoundcopy">Unfortunately, the number you entered is not in our tracking system.</p>

pw9qyyiw

pw9qyyiw1#

除了通过or子句增加2个expected_conditions之外,我们还可以轻松地构建一个CSS来满足我们的需求。下面的CSS将在mobile_txt_holder类或notfoundcopy类中查找EC:

  1. element = WebDriverWait(driver, 10).until(
  2. EC.presence_of_element_located((By.CSS_SELECTOR, ".mobile_txt_holder, .notfoundcopy"))

字符串
您可以在selenium中找到详细的讨论,两个XPath测试合二为一

tuwxkamq

tuwxkamq2#

从selenium python v4.0.0开始,您可以使用EC.any_of来查找多个条件或一起查找:

  1. WebDriverWait(driver, 30).until(
  2. EC.any_of(
  3. EC.presence_of_element_located((By.CLASS_NAME, "mobile_txt_holder")),
  4. EC.presence_of_element_located((By.CLASS_NAME, "notfoundcopy"))
  5. )
  6. )

字符串

相关问题