通过Selenium和Python调用get()方法时如何捕获网络故障?

时间:2018-08-21 20:01:35

标签: python selenium selenium-webdriver proxy webdriver

我正在将Chrome与硒配合使用,并且测试运行良好,直到Internet /代理连接突然断开,然后browser.get(url)才给我以下信息: enter image description here

如果我重新加载页面达99%,它将正常加载,那么处理此问题的正确方法是什么?

我的代码:

def web_adress_navigator(browser, link):
"""Checks and compares current URL of web page and the URL to be navigated and if it is different, it does navigate"""

try:
    current_url = browser.current_url
except WebDriverException:
    try:
        current_url = browser.execute_script("return window.location.href")
    except WebDriverException:
        current_url = None

if current_url is None or current_url != link:
    retries = 5
    while retries > 0:
        try:
            browser.get(link)
            break
        except TimeoutException:
            logger.warning('TimeoutException when tring to reach page')
            retries -= 1
            while not is_connected():
                sleep(60)
                logger.warning('there is no valid connection')

我不是进入超时异常,而是进入休息时间。

1 个答案:

答案 0 :(得分:1)

根据您的问题和尝试通过参数 FlushFileBuffers(hfile) 传递的 url 时的代码试用,您可以在以下方面调整策略: / p>

  • 您的程序将进行预定义的尝试次数,以调用所需的 url ,您可以通过link进行传递。
  • 一旦您调用range(),程序就会以预定的间隔调用get(link),以使 url包含来自的预定义WebDriverWait()网址
  • 您可以使用ExpectedCondition方法titleContains()partialURL块中处理此代码,并且在try{}的情况下,可以在{{1}中再次调用TimeoutException }块。
  • 您修改后的代码块将是:

    browser.get(link)