【问题标题】:I'm trying to use selenium code to refresh webpage regularly until button is clickable我正在尝试使用硒代码定期刷新网页,直到按钮可点击
【发布时间】:2021-06-02 12:12:44
【问题描述】:

我已经成功创建了一个脚本,该脚本可以浏览网页以加入候补名单(在此社区的大量帮助下)。此脚本在“加入候补名单”按钮可点击时有效,但有时候补名单未打开且没有可点击按钮。如何编写此脚本以不断刷新页面,直到链接可点击,然后继续执行以下脚本?

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()

【问题讨论】:

  • 当 true 然后使用 try 和 except 来突破或 driver.refresh()。

标签: python selenium webdriver selenium-chromedriver webdriverwait


【解决方案1】:

如评论部分所述,使用无限循环检查元素是否可点击,否则将进入异常并刷新页面并继续无限循环。如果它发现可点击,那么它将点击并打破无限循环。

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 方面非常新,所以这里的社区非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多