You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在WebDriverWait中使用OR语句?技术需求与代码问题咨询

在WebDriverWait中实现OR逻辑等待

你不能用Python的OR运算符拼接XPath字符串(这会导致语法逻辑错误),正确的做法是在XPath表达式内部使用|符号实现OR逻辑,这样就能让WebDriverWait等待两个元素中的任意一个出现。

实现步骤与代码示例

  1. 用XPath的|运算符合并两个元素的定位表达式
  2. 等待10秒直到任一元素可见
  3. 判断实际出现的元素类型,执行对应操作
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By

# 构造包含OR逻辑的XPath,用|分隔两个元素定位
target_xpath = f'//*[@id="{upc}"] | /html/body/app-root/div/crf-report-route-entry/crf-report-page/div/div[2]/crf-data-selector-panel/crf-navigation-list/div[2]/p'

# 等待10秒,直到任一元素可见
matched_element = WebDriverWait(driver, 10).until(ec.visibility_of_element_located((By.XPATH, target_xpath)))

# 判断当前元素是UPC还是“未找到”提示
if matched_element.get_attribute("id") == upc:
    # 找到UPC元素,执行点击
    matched_element.click()
else:
    # 找到“未找到”提示,将当前UPC加入列表
    your_upc_list.append(upc)

关键说明

  • XPath中的|等价于OR逻辑,会同时匹配两个定位表达式对应的元素集合
  • 等待完成后通过元素的id属性区分类型,无需额外的超时等待逻辑
  • 全程保留10秒的等待时长,适配网站慢加载的场景

内容的提问来源于stack exchange,提问作者pyhugs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:45:56