如何在Chrome中使用Selenium和python来检查"重新加载页面?"警报并单击重新加载?



我有一个正在测试的机器人,它大部分工作,但每隔一段时间,当它导航到一个新页面时,Chrome 会抛出"重新加载页面?"警报并停止机器人。如何在机器人中添加检查以查找此警报,如果存在,请单击警报上的"重新加载"按钮?

在我的代码中,我有

options.add_argument("--disable-popup-blocking")

driver = webdriver.Chrome(chrome_options=options, executable_path="chromedriver.exe")

但它仍然每隔一段时间就会发生一次。有什么建议吗?

您可以使用driver.switch_to_alert来处理这种情况。

我还会对警报本身调用WebDriverWait,以避免NoSuchAlert异常:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
def refresh_with_alert(driver):
# wrap this in try / except so the whole code does not fail if alert is not present
try: 
# attempt to refresh
driver.refresh()
# wait until alert is present
WebDriverWait(driver, 5).until(EC.alert_is_present())
# switch to alert and accept it
driver.switch_to.alert.accept()
except TimeoutException:
print("No alert was present.")

现在,您可以像这样调用:

# refreshes the page and handles refresh alert if it appears
refresh_with_alert(driver)

上面的代码将等待最多 5 秒以检查是否存在警报 - 这可以根据您的代码需求缩短。如果警报不存在,TimeoutException将在except块中命中。我们只需打印一条声明,指出警报不存在,代码将继续前进而不会失败。

如果警报存在,则代码将接受警报以将其关闭。

相关内容

  • 没有找到相关文章

最新更新