python - 我正在尝试使用硒代码定期刷新网页,直到按钮可点击
问题描述
我已经成功创建了一个脚本,该脚本可以浏览网页以加入候补名单(在这个社区的大量帮助下)。此脚本在“加入候补名单”按钮可点击时有效,但有时候补名单未打开且没有可点击按钮。如何编写此脚本以不断刷新页面,直到链接可点击,然后继续执行以下脚本?
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
PATH = "C:\Python\Pycharm\MCattempt2\Drivers\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://v2.waitwhile.com/l/fostersbarbershop/list-view")
try:
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "join-waitlist")))
finally:
element.click()
try:
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "ww-name")))
finally:
element.send_keys("geralt")
try:
element = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.ID, "phone01")))
finally:
element.send_keys("5555555")
try:
element = WebDriverWait(driver, 3).until(
EC.element_to_be_clickable((By.XPATH, "/html/body/app-root/public-landing-
page/main/div/div/public-confirm-page/div/div/div/div[2]/form/div[1]/button")))
finally:
element.click()
解决方案
如评论部分所述,使用无限循环检查元素是否可点击,否则将进入异常并刷新页面并继续无限循环。如果它发现可点击,那么它将点击并打破无限循环。
while True:
try:
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "ww-name")))
element.click()
break
except:
driver.refresh()
continue
推荐阅读
- python - 预测形状不正确
- django - 如何将 allauth 密码重置视为电子邮件验证?
- react-native - 找不到 -lFlipper-Boost-iOSX 的库
- r - 将时间从日期时间行转置为列
- javascript - PWA 不与 navigator.share 共享文件,仅下载
- javascript - javascript递归中的切片问题
- python-3.x - Pymongo 无法使用变量查询
- java - 如何从 txt 文件中的单行读取值
- qml - QML Plasma 小部件:DropShadow 导致持续警告
- css - CSS Grid 是否允许带有 grid-template-rows 和 grid-area 的 grid-auto-columns?