使用selenium chrome驱动程序进行测试未加载页面

时间:2018-02-16 13:07:16

标签: java selenium selenium-webdriver selenium-chromedriver remotewebdriver

我正在使用 selenium-java 版本:org.seleniumhq.selenium:selenium-java:3.8.1,chrome驱动程序版本:ChromeDriver 2.29.461571,google chrome版本:版本58.0 .3029.110(64位)。

当我运行我的测试时,有时谷歌浏览器会打开URL,而不是它没有将请求发送到服务器它等待了很长时间(甚至没有关闭或抛出错误),如果我刷新页面或按地址栏上的Enter键,它正在加载页面。

任何想法,为什么会发生这种情况以及如何解决这个问题。

我尝试过使用org.openqa.selenium.chrome.ChromeDriver和org.openqa.selenium.remote.RemoteWebDriver,我都遇到了同样的问题。

只是添加 - 我使用org.openqa.selenium.Proxy来设置一些http标头。

代码:

Class Test {
    private static BrowserMobProxyServer proxyServer;
    private static WebDriver driver;
    private static WebDriverWait wait;


    public static void main(String[] args) {
            proxyServer = new BrowserMobProxyServer();
            proxyServer.start(0);
            Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
            seleniumProxy.setProxyType(Proxy.ProxyType.MANUAL);
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);

            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.merge(capabilities);
            chromeOptions.setProxy(seleniumProxy);

            if (System.getProperties().containsKey("useRemoteWebDriver")) {
                RemoteWebDriver remoteDriver = new RemoteWebDriver(
                        new URL("http://localhost:4141/wd/hub"), chromeOptions);
                remoteDriver.setFileDetector(new LocalFileDetector());
                driver = remoteDriver;
            } else {
                ChromeDriverService service = new ChromeDriverService.Builder()
                        .usingDriverExecutable(new File("<driver path>"))
                        .usingAnyFreePort()
                        .build();
                driver = new ChromeDriver(service, chromeOptions);
            }
            driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

            proxyServer.addHeader("H1", "Value1");

            driver.get("http://www.myURL.com/testApp");
    }

}

0 个答案:

没有答案