跳过 Selenium 中缓慢加载的 ULR

Skip slow loading ULRs in Selenium

我开始学习 Selenium,但在某个时候卡住了,我必须说我不太确定如何解释我遇到的问题,但我会让它变得简单。 所以假设我们有 5 个不同的 URLs,我需要检查它们并查看它们是否使用以下方法正确重定向:

driver.get(*insert URL here*);

让我们给出以下 URLs:

  1. https://whosebug.com/
  2. https://github.com/
  3. https://duckduckgo.com/
  4. https://www.javatpoint.com/
  5. https://www.toolsqa.com/

我有一个循环通过 driver.get(*insert URL here*);,我注意到第 4 个 URL 非常慢,它甚至不会移动到第 5 个 URL,我该如何跳过它,如果比方说,它达到了 15 秒?

这是我的 java 代码:

    for(int i=0; i<mediasCAS.length; i++){
        if(mediasCAS[i][4] != "?") {
            driver.get(mediasCAS[i][4]);
        }
        else
            continue;
        System.out.println("Site Name : "+mediasCAS[i][1]);
    }

mediasCAS 是一个包含网站信息的二维数组,其中第 4 列包含 URLs。

Selenium 允许使用方法 pageLoadTimeout()

来自 Javadoc:

Sets the amount of time to wait for a page load to complete before throwing an error. If the timeout is negative, page loads can be indefinite.

将它与 try-catch 结合,您可以忽略异常并继续 for 循环,如下所示:

driver.manage().timeouts().pageLoadTimeout(15, TimeUnit.SECONDS);
for(int i=0; i<mediasCAS.length; i++){
    try {
        if(mediasCAS[i][4] != "?") {
            driver.get(mediasCAS[i][4]);
        }
        else
            continue;
        System.out.println("Site Name : "+mediasCAS[i][1]);
    } catch (Exception ignore) {
        continue;
    }
}