pageLoadTimeout 在 Selenium 中不起作用 - Java

pageLoadTimeout is not working in Selenium - Java

我正在 linux host.The 页面中测试一个网站,我正在无限地访问负载,所以我正在尝试为 selenium 设置 pageLoadTimeout。 Firefox 被正确触发,但 URL 不是 loading/navigating/added in url bar.just blank firefox window.I 我也没有看到任何错误。

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);
driver.get("http://www.example.com");

但是如果我删除 driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS); 代码工作正常

硒版本:3.14.0;

gecko 驱动程序:18 - linux(使用 gecko 16,17 测试也是同样的问题)

浏览器:firefox-52

os/platform : linux

如果出现此类问题,我如何确保我的驱动程序在 5 minute.Host 后自动退出将仅支持 firefox 52。

我检查了这个 但没有解决我的问题。

谢谢 Jk

您可以为浏览器设置页面加载策略,这样页面就不会等待其他 Selenium 命令执行的完整页面加载。下面是 Java 中的示例代码片段。支持三个值:

正常

此策略导致 Selenium 等待整个页面加载(html 内容和子资源已下载并解析)。

渴望

此策略导致 Selenium 等待 DOMContentLoaded 事件(html 仅下载和解析内容)。

none

此策略导致 Selenium 在完全接收初始页面内容(html 内容已下载)后立即 return。

默认情况下,当 Selenium 加载页面时,它遵循正常 pageLoadStrategy。

DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("pageLoadStrategy", "eager");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(caps);
WebDriver driver = new FirefoxDriver(opt);
driver.get("https://www.google.com/");

如果您只对页面的 HTML 感兴趣,最好使用 "eager" 策略。

您没有提到您尝试访问的 url 但是 pageLoadTimeout for Selenium Selenium v​​3.14.0GeckoDriver v0.23.0Firefox Quantum v62.0.3 一起正常工作组合。我能够通过以下打印 TimeoutException occurred 的示例在控制台上看到预期的输出。每当触发 pageLoadTimeout 时退出程序

  • 代码块:

    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.TimeoutException;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class A_Firefox_Test 
    {
        public static void main(String[] args) 
        {
            System.setProperty("god.bless.us", "C:/Utility/BrowserDrivers/geckodriver.exe");
            WebDriver driver = new FirefoxDriver();
            driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);
            try {
                driver.get("https://www.booking.com/hotel/in/the-taj-mahal-palace-tower.html?label=gen173nr-1FCAEoggJCAlhYSDNiBW5vcmVmaGyIAQGYATG4AQbIAQzYAQHoAQH4AQKSAgF5qAID;sid=338ad58d8e83c71e6aa78c67a2996616;dest_id=-2092174;dest_type=city;dist=0;group_adults=2;hip_dst=1;hpos=1;room1=A%2CA;sb_price_type=total;srfid=ccd41231d2f37b82d695970f081412152a59586aX1;srpvid=c71751e539ea01ce;type=total;ucfs=1&#hotelTmpl");
            } catch (TimeoutException e) {
                System.out.println("TimeoutException occurred. Quiting the program.");
            }
            driver.quit();
        }
    }
    
  • 控制台输出:

    1539157195615   Marionette  INFO    Listening on port 1920
    Oct 10, 2018 1:09:56 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    Oct 10, 2018 1:10:00 PM org.openqa.selenium.remote.ErrorCodes toStatus
    INFO: HTTP Status: '500' -> incorrect JSON status mapping for 'timeout' (408 expected)
    TimeoutException occurred. Quiting the program.
    
  • 您可以在

  • 中找到详细的堆栈跟踪
  • 您可以在
  • 中找到 Pythonic 方法 pageLoadTimeout