如何用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
相关产品推荐
相关产品推荐

