selenium webdriver - 启用javascript需要太多时间才能导航到URL

时间:2018-05-23 06:18:56

标签: java selenium selenium-webdriver webdriver htmlunit

我使用Selenium Web驱动程序导航到页面。我正在使用HtmlUnitDriver进行无头测试(没有GUI)。这是我的简单代码:

/*
 * Create web driver object
 */
WebDriver webDriver = new HtmlUnitDriver(){
        //@override
        protected WebClient getWebClient() {
            WebClient webClient = super.getWebClient();
            //webClient.getCache().setMaxSize(0);
            //webClient.getOptions().setUseInsecureSSL(true); //ignore ssl certificate
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
            webClient.getOptions().setPrintContentOnFailingStatusCode(false);
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.getOptions().setCssEnabled(true);
            webClient.setCssErrorHandler(new SilentCssErrorHandler());
            webClient.getOptions().setRedirectEnabled(true);
            //webClient.getOptions().setTimeout(10000);
            return webClient;
        }
    };

现在我正在导航到一个页面 - http://google.com

long startTime = System.currentTimeMillis();
webDriver.get("http://google.com");
long timeTaken = System.currentTimeMillis() - startTime;
System.out.println(Thread.currentThread().getName()+" Result:: Title: "+webDriver.getTitle()+" Current URL: "+webDriver.getCurrentUrl()+" Time taken(ms): "+timeTaken);

我看到导航到上面的网址的时间是~3秒

如果JavaScript被禁用为webClient.getOptions().setJavaScriptEnabled(false);,则大约需要1秒

在我的浏览器上启用了javascript,当我导航到http://google.com而没有任何先前的缓存时,大约需要1秒钟。

现在我的问题是为什么在代码中启用javascript需要额外的时间以及我需要做些什么代码更改才能删除这个额外的时间来保持启用javascript。这也发生在其他网站上。

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

如果启用了javascript,HtmlUnit将像每个浏览器一样处理页面上的所有javascript。这需要时间。至少在执行大量javascript的页面中,处理可能比现代浏览器慢。

禁用javascript可能会导致一个非(完全)工作的页面,因为所有的网页设计师/开发人员都认为Javascript在每个浏览器中都可用,所有的花哨效果(以及所有用户跟踪)都是使用javascript完成的。