首页 > 解决方案 > Python + Selenium:在 WebDriverWait 调用超时后重新加载页面

问题描述

我正在寻找一种在 Python Selenium 中实现以下的正确方法

  1. 加载页面
  2. 等待一段时间(例如 30 秒)让按钮可点击(通过调用 WebDriverWait)
  3. 如果遇到 TimeoutException,重新加载页面,即转到第 1 步)
url = 'https://...'
driver = webdriver.Chrome('./chromedriver')

try:
    driver.get(url)
    wait = WebDriverWait(driver, 30)
    element = wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'button')))
except TimeoutException as e: 
    <reload the url again>

标签: pythonseleniumloopsselenium-webdriverwebdriverwait

解决方案


如果找不到元素,您可以创建将自动调用刷新的函数。

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 os

driver = webdriver.Chrome(executable_path =os.path.abspath(os.getcwd()) + "/chromedriver")
driver.get("https://selenium-python.readthedocs.io/waits.html")


def refresh():
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CLASS_NAME, "button"))
        )
    except:
        driver.refresh()
        refresh()


refresh()

推荐阅读