JavascriptExecutor не выполняет действие прокрутки - PullRequest
3 голосов
/ 06 апреля 2019

Я автоматизирую тесты для видео на YouTube;возьмите это, например, - https://www.youtube.com/watch?v=AjWfY7SnMBI. Я хочу прокрутить страницу вниз, чтобы проверить, загружаются ли комментарии.Однако Javascript не выполняется, прокрутка не происходит.Тест проходит, так как нет сообщений об ошибках.Что может быть причиной этого?

Я пробовал следующее:

js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
js.executeScript("window.scrollTo(0, 2500);");

Ни то, ни другое не работает.

public void scrolledCommentCount() throws InterruptedException{
    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
    Thread.sleep(9000);
    System.out.print("Scrolled");

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Вы можете использовать sendKeys метод для pagedown. Попробуйте этот код. Надеюсь, это поможет.

JavascriptExecutor js = (JavascriptExecutor)driver;

        while(true){

            Long height=(Long) js.executeScript("return document.body.scrollHeight");
            System.out.println(height);
            Thread.sleep(1000);
            driver.findElement(By.tagName("body")).sendKeys(Keys.END);        

            if (height==0)
            {
                break;
            }               

        } 
1 голос
/ 06 апреля 2019

Похоже, YouTube не устанавливает значение для document.body.scrollHeight (т. Е. Оно равно нулю), поэтому, вероятно, ваш первый метод не работает. Существует несколько переменных, используемых для определения высоты документа, и не все сайты имеют значения для всех них. Веб-сайт здесь предлагает следующий подход для определения высоты:

window.myScrollHeight = Math.max(
  document.body.scrollHeight, document.documentElement.scrollHeight,
  document.body.offsetHeight, document.documentElement.offsetHeight,
  document.body.clientHeight, document.documentElement.clientHeight
);

Оберните эту команду в другой метод js.executeScript(); в вашем коде Java. После этого вы можете просто вызвать window.scrollTo(0, window.myScrollHeight);, чтобы использовать новую переменную.

Если это все еще не работает, тогда я бы проверил, действительно ли вы звоните scrolledCommentCount(). Это может быть еще одна причина, по которой сайт не прокручивается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...