首页 > 解决方案 > 如何在 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()`

只有被冻结,页面不刷新

标签: pythonselenium-chromedriver

解决方案


如果页面自动将您重定向到您期望此元素的位置,那么我建议使用 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 秒后未找到该元素,则会引发异常。

您可以在此处阅读有关硒等待的更多信息


推荐阅读