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

如何用Python+Selenium通过if-else逻辑实现预约备选时间元素点击

实现自动化预约机器人的优先时段选择逻辑

你的现有代码存在两个问题:一是如果首选时段不存在,代码会直接抛出异常终止,无法执行次选时段的点击;二是就算首选时段存在,代码也会继续尝试点击次选时段,不符合「优先选首选,无首选再选次选」的需求。

以下是两种可行的解决方案:

方案一:使用异常捕获(Try-Except)

利用Selenium找不到元素时抛出的NoSuchElementException来处理逻辑,优先尝试首选时段,失败则切换到次选:

from selenium.common.exceptions import NoSuchElementException

try:
    # 尝试定位并点击首选时间
    preferred_time = driver.find_element(By.XPATH, '//div[@class="booking-start-time-label"][contains(., "12:33pm")]')
    preferred_time.click()
except NoSuchElementException:
    # 首选时间不存在时,定位并点击次选时间
    second_preferred_time = driver.find_element(By.XPATH, '//div[@class="booking-start-time-label"][contains(., "1:33pm")]')
    second_preferred_time.click()

方案二:通过元素列表判断存在性

使用find_elements(注意复数形式)获取匹配元素的列表,通过列表是否为空判断时段是否存在:

# 获取所有匹配首选时间的元素
preferred_times = driver.find_elements(By.XPATH, '//div[@class="booking-start-time-label"][contains(., "12:33pm")]')
if preferred_times:
    # 存在首选时间,点击第一个匹配项
    preferred_times[0].click()
else:
    # 首选时间不存在,点击次选时间
    second_preferred_time = driver.find_element(By.XPATH, '//div[@class="booking-start-time-label"][contains(., "1:33pm")]')
    second_preferred_time.click()

两种方案都能实现你的需求:优先选择12:33pm的时段,只有当该时段不存在时,才会选择1:33pm的时段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:57:17