Selenium Python 等待元素可点击及不可点击时执行其他逻辑的方法
你可以通过捕获 WebDriverWait 抛出的超时异常实现这个需求:element_to_be_clickable 本身就会校验元素处于可见且可点击的状态,等待超时后会抛出 TimeoutException,你只要在异常分支里写按钮不可用状态下要执行的代码即可。
完整代码示例:
from selenium.common.exceptions import TimeoutException # 提前定义提交按钮的定位条件,方便复用 submit_btn_locator = (By.XPATH, "//button[@class='my-button my-button--size_large my-button--primary my-button--loader' and @type='submit']") try: # 最多等待300秒,直到按钮变为可点击状态 WebDriverWait(driver, 300).until(EC.element_to_be_clickable(submit_btn_locator)) # 运行到此处说明按钮已经可点击,执行点击或后续提交逻辑 driver.find_element(*submit_btn_locator).click() except TimeoutException: # 等待超时,说明300秒内按钮始终不可点击,在此处编写你要执行的其他代码 print("提交按钮长时间不可用,执行备用逻辑") # 此处写你的其他业务逻辑,比如刷新页面、取消操作等
补充说明:
- 你可以根据实际业务需要调整
WebDriverWait的第二个参数(等待时长,单位为秒),不需要等待300秒的话可以改成更短的数值,超时就会立刻触发备用逻辑 - 如果需要循环轮询检测按钮状态,可以把整段逻辑放到循环结构中,满足终止条件再退出即可
内容的提问来源于stack exchange,提问作者Kabomi
相关产品推荐
相关产品推荐

