селен вебдрайвер - включение JavaScript занимает слишком много времени для перехода к URL - PullRequest
0 голосов
/ 23 мая 2018

Я использую Selenium Web-драйвер для перехода на страницу.Я использую HtmlUnitDriver для автономного тестирования (без графического интерфейса).Вот мой простой код:

/*
 * 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);

Я вижу, что время перехода к указанному выше URL составляет ~ 3 секунды

Если JavaScript отключен как webClient.getOptions().setJavaScriptEnabled(false);, это займет около ~ 1 секунды

А также в моем браузере с включенным JavaScript, когда я перехожу к http://google.com без какого-либо предыдущего кэша, этозанимает около 1 секунды.

Теперь мой вопрос: почему включение javascript в коде требует дополнительного времени и какие изменения кода мне нужно сделать, чтобы удалить это дополнительное время, оставив javascript включенным.Это происходит и с другим сайтом.

Любая помощь будет оценена.Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Если включен javascript, HtmlUnit будет обрабатывать весь javascript на странице, как это делает каждый браузер.И это требует времени.По крайней мере, на страницах с большим количеством javascript обработка может быть медленнее, чем в современном браузере.

Отключение javascript может привести к не (полностью) рабочей странице, потому что все веб-дизайнеры / разработчики считают, что Javascript доступенв любом браузере и все необычные эффекты (и все отслеживание пользователей) выполняются с использованием JavaScript.

...