我有一个正在测试的机器人,它在大多数情况下都可以正常运行,但是在浏览到新页面时,Chrome偶尔会抛出一个“重新加载页面?”。警报,它会停止漫游器。如何在漫游器中添加检查该警报的支票,如果该支票在其中,请单击警报上的“重新加载”按钮?
在我的代码中,我有
options.add_argument("--disable-popup-blocking")
和
driver = webdriver.Chrome(chrome_options=options, executable_path="chromedriver.exe")
但是它仍然偶尔会发生一次。有什么建议吗?
答案 0 :(得分:1)
您可以使用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
。我们只打印一条声明不存在警报的语句,代码将继续运行而不会失败。
如果警报存在,则代码将接受警报以将其关闭。