Как прокрутить страницу вниз или вверх в Selenium Вебдрайвер

⚡ Умное резюме

Прокрутка страницы в Selenium WebDriver использует JavascriptИнтерфейс исполнителя для запуска JavaКоманды прокрутки скрипта используются, поскольку WebDriver напрямую манипулирует DOM. Рассматриваются четыре практических сценария: прокрутка по пикселям, до элемента, до нижней части страницы и горизонтальная прокрутка.

  • 📜 JavascriptИсполнитель: Работает JavaКоманды прокрутки скрипта Selenium ВебДрайвер.
  • 🔢 Прокрутка по пикселям: Функция window.scrollBy(x,y) перемещает страницу на заданное количество пикселей.
  • 🎯 Прокрутите до элемента: Метод scrollIntoView() прокручивает страницу до тех пор, пока целевой элемент не станет полностью видимым.
  • ⬇️ Прокрутите вниз: Метод scrollTo с параметром document.body.scrollHeight позволяет достичь конца страницы.
  • ↔️ Горизонтальная прокрутка: Функция scrollIntoView также перемещает курсор вбок к элементам, находящимся за пределами экрана.
  • 🧭 Основные принципы работы полосы прокрутки: При прокрутке отображаются элементы, которые загружаются только тогда, когда попадают в поле зрения.

Прокрутите страницу вниз или вверх. Selenium Вебдрайвер

Прокрутите Selenium

Для прокрутки с помощью Selenium, вы можете использовать JavaИнтерфейс ScriptExecutor, который помогает выполнить JavaМетоды скрипта через Selenium Вебдрайвер

Синтаксис:

JavascriptExecutor js = (JavascriptExecutor) driver;  
   js.executeScript(Script,Arguments);
  • Скрипт – это JavaСкрипт, который необходимо выполнить.
  • Аргументы – это аргументы сценария. Это необязательно.

Что такое полоса прокрутки?

Полоса прокрутки позволяет перемещаться по экрану в горизонтальном или вертикальном направлении, если текущая прокрутка страницы не соответствует видимой области экрана. Используется для перемещения окна вверх и вниз.

Selenium Webdriver не требует прокрутки для выполнения действий, поскольку он манипулирует DOM. Но на некоторых веб-страницах элементы становятся видимыми только после того, как пользователь прокрутит их. В таких случаях может потребоваться прокрутка.

Полоса прокрутки бывает двух типов: горизонтальный и вертикальный полоса прокрутки, как показано на снимке экрана ниже.

полоса прокрутки

полоса прокрутки

Selenium Скрипт для прокрутки страницы вниз

Давайте рассмотрим прокрутку веб-страницы с помощью веб-драйвера Selenium по следующим 4 сценариям:

  • Сценарий 1. Прокрутка веб-страницы вниз по пикселям.
  • Сценарий 2. Прокрутка веб-страницы вниз по видимости элемента.
  • Сценарий 3. Прокрутка веб-страницы вниз в нижней части страницы.
  • Сценарий 4. Горизонтальная прокрутка веб-страницы.

Сценарий 1. Прокрутка веб-страницы вниз по пикселям.

Selenium Сценарий

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class ScrollByPixel {

    WebDriver driver;
    @Test
    public void ByPixel() {
        System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe");
        driver = new ChromeDriver();

        JavascriptExecutor js = (JavascriptExecutor) driver;

        // Launch the application		
        driver.get("https://demo.guru99.com/test/guru99home/");

        //To maximize the window. This code may not work with Selenium 3 jars. If script fails you can remove the line below		
        driver.manage().window().maximize();

        // This  will scroll down the page by  1000 pixel vertical		
        js.executeScript("window.scrollBy(0,1000)");
    }
}

Сценарий DescriptионВ приведенном выше коде сначала мы запускаем заданный URL В браузере Chrome. Затем прокрутите страницу на 1000 пикселей с помощью команды executeScript. Javascript Метод ScrollBy() прокручивает веб-страницу до определенного количества пикселей.

Синтаксис методов ScrollBy():

executeScript("window.scrollBy(x-pixels,y-pixels)");

x-пиксели — это число по оси X, оно перемещается влево, если число положительное, и вправо, если число отрицательное. Y-пиксели — это число по оси Y, оно перемещается вниз, если число равно положительный, и он движется вверх, если число отрицательное.

Пример:

js.executeScript("window.scrollBy(0,1000)"); //Scroll vertically down by 1000 pixels

Выходной анализ: Вот результат выполнения приведенного выше сценария.

Прокрутите веб-страницу вниз по пикселям

Сценарий 2. Прокрутка веб-страницы вниз по видимости элемента.

Selenium Сценарий

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class ScrollByVisibleElement {

    WebDriver driver;
    @Test
    public void ByVisibleElement() {
        System.setProperty("webdriver.chrome.driver", "G://chromedriver.exe");
        driver = new ChromeDriver();
        JavascriptExecutor js = (JavascriptExecutor) driver;

        //Launch the application		
        driver.get("https://demo.guru99.com/test/guru99home/");

        //Find element by link text and store in variable "Element"        		
        WebElement Element = driver.findElement(By.linkText("Linux"));

        //This will scroll the page till the element is found		
        js.executeScript("arguments[0].scrollIntoView();", Element);
    }
}

Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Затем прокрутите страницу до тех пор, пока упомянутый элемент не будет виден на текущей странице. Javascript метод ScrollIntoView() прокручивает страницу до тех пор, пока упомянутый элемент не окажется на виду:

js.executeScript("arguments[0].scrollIntoView();",Element );

«arguments[0]» означает первый индекс страницы, начинающийся с 0.

Где «Элемент» — это указатель на веб-странице.

Выходной анализ: Вот результат выполнения приведенного выше сценария.

 Прокрутите веб-страницу вниз по видимости элемента

Сценарий 3. Прокрутка веб-страницы вниз в нижней части страницы.

Selenium Сценарий

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class ScrollByPage {

    WebDriver driver;
    @Test
    public void ByPage() {
        System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe");
        driver = new ChromeDriver();

        JavascriptExecutor js = (JavascriptExecutor) driver;

        // Launch the application		
        driver.get("https://demo.guru99.com/test/guru99home/");

        //This will scroll the web page till end.		
        js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
    }
}

Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Далее прокрутите страницу до конца. Javascript Метод ScrollTo() прокручивает страницу до конца.

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

«document.body.scrollHeight» возвращает полную высоту тела, то есть веб-страницы.

Анализ результатов: Вот результат выполнения приведенного выше сценария.

Прокрутите веб-страницу вниз в нижней части страницы.

Сценарий 4. Горизонтальная прокрутка веб-страницы.

Selenium Сценарий

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;

public class HorizontalScroll {

    WebDriver driver;
    @Test
    public void ScrollHorizontally() {
        System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe");
        driver = new ChromeDriver();

        JavascriptExecutor js = (JavascriptExecutor) driver;

        // Launch the application		
        driver.get("https://demo.guru99.com/test/guru99home/scrolling.html");

        WebElement Element = driver.findElement(By.linkText("VBScript"));

        //This will scroll the page Horizontally till the element is found		
        js.executeScript("arguments[0].scrollIntoView();", Element);
    }
}

Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Затем прокрутите страницу по горизонтали, пока упомянутый элемент не будет виден на текущей странице. Javascript метод ScrollIntoView() прокручивает страницу до тех пор, пока упомянутый элемент не окажется на виду:

js.executeScript("arguments[0].scrollIntoView();",Element );

Анализ результатов: Вот результат выполнения приведенного выше сценария.

Горизонтальная прокрутка на веб-странице

Узнать больше о JavaScriptExecutor

Часто задаваемые вопросы (FAQ)

Используйте отрицательное значение в пикселях с window.scrollBy, например, js.executeScript с window.scrollBy(0,-1000). Отрицательное значение по оси Y перемещает страницу вверх, в отличие от положительного значения, которое перемещает страницу вниз.

Да. Вы можете передавать элементым значения Keys.PAGE_DOWN, Keys.END или клавиши со стрелками, либо использовать класс Actions. Selenium 4. JavascriptИсполнитель по-прежнему остается наиболее гибким вариантом.

Браузеры захватывают только видимую область страницы, поэтому скрипты прокручивают страницу, захватывают разделы и объединяют их. Прокрутка также запускает отложенную загрузку изображений и контента перед созданием скриншота.

Да. Искусственный интеллект-ассистенты создают фрагменты кода для прокрутки по горизонтали, встраивания в представление и прокрутки до нужного места на основе простых инструкций и объясняют математические вычисления для пикселей. RevПроверьте локаторы и условия ожидания, прежде чем запускать их в своем наборе тестов.

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

Функция scrollBy перемещает страницу на фиксированное количество пикселей от текущей позиции. Функция scrollIntoView прокручивает страницу до тех пор, пока не станет виден определенный элемент. Используйте scrollBy для определения расстояния, а scrollIntoView — для выбора целевых элементов.

Подведем итог этой публикации следующим образом: