2016-04-29 2 views
2

Я ищу способ прокрутки вниз до страницы, которая загружает контент по мере его прокрутки, чтобы все загрузилось, прежде чем я начну взаимодействовать с ним, используя Selenium.using document.readyState правильно с Selenium

Я нашел этот код ниже, который был опубликован для C#, я изменил его на Java. Он компилируется и запускается. Но даже если страница достигает конца, он не выходит из цикла

 Boolean readyStateComplete = false; 
     while (!readyStateComplete) 
     { 
      JavascriptExecutor executor = (JavascriptExecutor) driver; 
      executor.executeScript("window.scrollTo(0, document.body.offsetHeight)"); 
      readyStateComplete = (String) executor.executeScript("return document.readyState") == "complete"; 
     } 

Я не знаю много о JavaScript. Как это можно исправить?

+1

попробовать **. equals() ** метод вместо * == * i означает readyStateComplete = ((String) executor.executeScript ("return document.readyState")). equals ("complete"); –

+0

это сделал. Если вы опубликуете его в качестве ответа, я приму его – Arya

+0

ok @Arya спасибо. –

ответ

1

Пожалуйста, попробуйте .equals() метод вместо == я означает

readyStateComplete = ((String) executor.executeScript("return document.readyState")).equals("complete"); 

== тесты на равенство ссылок (являются ли они тот же объект).

.equals() тесты для равенства значений (независимо от того, являются ли они логически «равными»).

0

Лучший способ прокрутки страницы вниз и ждать, пока содержание будет загружен, чтобы использовать executeAsyncScript, а затем ждать высоты прокрутки, чтобы изменить и для государства, чтобы быть готовым:

WebDriver driver= new ChromeDriver(); 
driver.manage().timeouts().setScriptTimeout(20, TimeUnit.SECONDS); 
JavascriptExecutor js = (JavascriptExecutor)driver; 

driver.get("http://imgur.com/"); 

final String JS_SCROLL_DOWN = 
    "var callback = arguments[0], page = document.documentElement, height = page.scrollHeight; " + 
    "window.scrollTo(0, height); " + 
    "(function fn(){ " + 
    " if(page.scrollHeight != height && document.readyState == 'complete') " + 
    "  return callback(); " + 
    " setTimeout(fn, 30); " + 
    "})();"; 

js.executeAsyncScript(JS_SCROLL_DOWN); 
Смежные вопросы