python - Python + Selenium:在 WebDriverWait 调用超时后重新加载页面
问题描述
我正在寻找一种在 Python Selenium 中实现以下的正确方法
- 加载页面
- 等待一段时间(例如 30 秒)让按钮可点击(通过调用 WebDriverWait)
- 如果遇到 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>
解决方案
如果找不到元素,您可以创建将自动调用刷新的函数。
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()
推荐阅读
- react-native - Expo Android App 默认不需要任何权限
- python - 在函数中执行循环多处理的最快方法?
- arangodb - arangodb默认多少线程执行AQL查询?可以推广吗?
- urllib - python 3.8 urllib 文件:// 问题
- installation - Pycharm 包安装 - 离线
- c# - 如何在字符串中统一获取包含 c# 的字符串?
- flutter - 未处理的异常:InternalLinkedHashMap
' 不是 Map 类型的子类型 - google-cloud-platform - Google Cloud SQL - 如何创建窗口身份验证
- javascript - 找出如何最好地解决基于嵌套 ID 和 mongoose 更新许多字段的问题
- arrays - 返回值属于与 bash 关联数组中的 glob 表达式匹配的键名