如何在Python Selenium的WebDriverWait中实现if-else逻辑
Python Selenium:WebDriverWait超时后不终止程序的处理方案
直接通过捕获TimeoutException异常来实现你要的分支逻辑即可,WebDriverWait等待超时后会抛出该异常,用try-except块包裹等待代码,就能分别处理元素加载成功和超时的场景,不会终止程序。
完整代码示例
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 必须导入超时异常类 from selenium.common.exceptions import TimeoutException element = None try: # 等待10秒,直到目标元素出现 element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, "#freightCalculatorForm > div > fieldset.col-xs-12.col-lg-6.col-md-6.text-center > div.freightCalcResult > div > p:nth-child(2)")) ) # 元素加载成功后的操作 print("运费估算元素已加载完成") # 可在此对element执行后续操作,比如获取文本 # freight_info = element.text except TimeoutException: # 超时后的自定义操作 print("运费估算元素加载超时,执行替代逻辑") # 这里编写你需要的其他操作,比如跳过当前步骤、刷新页面等 # 程序会继续执行后续代码 print("流程继续推进...")
关键说明
try块包裹等待逻辑,成功获取元素后执行正常业务流程except TimeoutException专门捕获超时异常,在块内处理超时场景- 需提前导入
TimeoutException类,否则会触发未定义异常错误 - 提前初始化
element为None,方便后续判断元素是否加载成功
内容的提问来源于stack exchange,提问作者mercurio
相关产品推荐
相关产品推荐

