python - 如何在 Selenium 中循环“刷新页面”
问题描述
我正在使用 Selenium 从 Excalibur 中提取表格。当您将文件上传到其中时,您必须刷新页面,直到页面重定向到工作区。显示:
<div class="container"> == $0 empty
然后当你刷新显示:
<div class="container">
<div class="row pb-4">
<div class="row">
<div class="row">
我使用了“time.sleep()”,但是根据文件和页面的不同,等待的时间会增加,有时我会出错。然后我尝试了:
`while True:
if driver.find_element_by _linked_text('Workspace'):
break
else:
driver.refresh()`
只有被冻结,页面不刷新
解决方案
如果页面自动将您重定向到您期望此元素的位置,那么我建议使用 selenium 的内置WebDriverWait
功能。这将接受等待元素加载的最长时间作为参数,并在找到该元素后立即返回该元素。就像是:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver.refresh()
my_element = WebDriverWait(driver, 30).until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Workspace")))
# code that needs this element loaded
这将使代码冻结长达 30 秒,但如果元素加载得更快,它可以更快地继续。如果 30 秒后未找到该元素,则会引发异常。
您可以在此处阅读有关硒等待的更多信息
推荐阅读
- sql - SQL 多个 where 子句
- encoding - 如何在 NetLogo 中让乌龟成倍增长?
- android - 使用 DialogFragment 和导航库时将对话框显示为全屏或对话框
- html - Table Html 5 th td 问题
- algorithm - 可以使用 O(1) 或 O(log n) 来计算元素数量吗?
- android - 当应用程序在 Android 上中断时,我的“共享项目”中的课程会发生什么情况?
- python - 如何以编程方式告诉 matplotlib 绘图窗口保存和关闭
- sql - Oracle SQL 字符串以“987”或“I”开头
- node.js - 从计划的 Windows 任务调用时,节点的 spawn/exec 不工作
- laravel - Laravel Lighthouse Graphql belongsToMany 具有枢轴值的突变