首页 > 解决方案 > Selenium - 访问离线网站后如何继续使用 url 列表?

问题描述

我可以就我正在尝试完成的以下任务寻求一些帮助吗?我尝试使用 Selenium 自动检查 url 列表并对它们中的每一个执行一组点击操作,如果网站处于离线状态,我想转到列表中的下一个 url 并执行相同的点击操作。

贝娄是我到目前为止已经实现的代码,但是它不起作用:

from selenium import webdriver ## importing webdriver
import time ## importing waiting time fuctions
from selenium.common.exceptions import TimeoutException ## importing the timeout fuctions
driver = webdriver.Chrome()

## Setting the Timeout timer in seconds
MAX_TIMEOUT_SECONDS = 60
## Getting url from list "url"
urlsList = ['urlone','urltwo', 'urlthree', 'urlfour']
## Getting list of urls
for s in urlsList:
    urls = str(s)
    ## loop with timeout exception
    try:
        ## Activinting the Timeout fuctions
        driver.set_page_load_timeout(MAX_TIMEOUT_SECONDS)
        driver.get(urls)
        ## Clicking on tab
        systemTab = driver.find_element_by_xpath('/html/body/ul[1]/li[3]/a')
        systemTab.click()
        ## Clicking on Bottom
        buttonRaul = driver.find_element_by_xpath('/html/body/ul[2]/li[4]/a')
        buttonRaul.click()
        ## Clicking on confirmation
        buttomGoo = driver.find_element_by_xpath('/html/body/div[2]/div[2]/button')
        buttomGoo.click()
        time.sleep(5) ## Wait 5 seconds
    except TimeoutException:
        continue

driver.quit()

我尝试使用超时作为表单来确定网站是否在 60 秒后离线/没有响应,但是当我运行代码时,代码在线工作,直到它到达离线网站并停在那里。

标签: pythonseleniumselenium-webdriver

解决方案


我试图用java回答这个问题,因为我对Python不太熟悉。当您运行测试离线模式时,我们可以使用 loadingFailed() 从浏览器获取日志,即 – net::ERR_INTERNET_DISCONNECTED,然后您可以继续下一个 URL。

    import org.openqa.selenium.devtools*;

    driver = new ChromeDriver();
    devTools =  ((ChromeDriver)driver).getDevTools();
    driver.get("https://www.homepage.com");
    devTools.createSession();
    devTools.addListener(loadingFailed(), loadingFailed ->
   {
       System.out.println(loadingFailed.getErrorText());
       Assert.assertEquals(loadingFailed.getErrorText(), "net::ERR_INTERNET_DISCONNECTED");
   });

推荐阅读