能否在WebDriverWait中使用OR语句?技术需求与代码问题咨询
在WebDriverWait中实现OR逻辑等待
你不能用Python的OR运算符拼接XPath字符串(这会导致语法逻辑错误),正确的做法是在XPath表达式内部使用|符号实现OR逻辑,这样就能让WebDriverWait等待两个元素中的任意一个出现。
实现步骤与代码示例
- 用XPath的
|运算符合并两个元素的定位表达式 - 等待10秒直到任一元素可见
- 判断实际出现的元素类型,执行对应操作
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
相关产品推荐
相关产品推荐

