Як прокрутити сторінку вниз або вгору Selenium Веб-драйвер

⚡ Розумний підсумок

Прокручування сторінки Selenium WebDriver використовує JavascriptІнтерфейс виконавця для запуску JavaКоманди прокручування скриптів, оскільки WebDriver маніпулює DOM безпосередньо. Чотири практичні сценарії охоплюють прокручування по пікселях, до елемента, до низу сторінки та горизонтальне прокручування.

  • 📜 JavascriptВиконавець: Runs JavaКоманди прокручування скриптів Selenium WebDriver.
  • 🔢 Прокручування по пікселях: 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 Script

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)");
    }
}

Script 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 Script

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);
    }
}

Script Descriptіон: У наведеному вище коді ми спочатку запускаємо вказану URL-адресу в браузері Chrome. Далі прокрутіть сторінку, поки згаданий елемент не стане видимим на поточній сторінці. Javascript метод scrollIntoView() прокручує сторінку, доки згаданий елемент не буде повністю видно:

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

«arguments[0]» означає перший індекс сторінки, що починається з 0.

Де «Елемент» є локатором на веб-сторінці.

Аналіз результатів: Ось вихідні дані, коли ви виконуєте наведений вище сценарій.

 Прокрутіть веб-сторінку вниз за видимістю елемента

Сценарій 3: щоб прокрутити веб-сторінку в нижній частині сторінки.

Selenium Script

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)");
    }
}

Script Descriptіон: У наведеному вище коді ми спочатку запускаємо вказану URL-адресу в браузері Chrome. Далі прокрутіть до кінця сторінки. Javascript метод scrollTo() прокрутити до кінця сторінки.

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

“document.body.scrollHeight” повертає повну висоту тіла, тобто веб-сторінки.

Аналіз результатів: Ось вихідні дані, коли ви виконуєте наведений вище сценарій.

Прокрутіть веб-сторінку вниз. Унизу сторінки

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

Selenium Script

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);
    }
}

Script Descriptіон: У наведеному вище коді ми спочатку запускаємо вказану URL-адресу в браузері Chrome. Далі прокрутіть сторінку горизонтально, доки згаданий елемент не стане видимим на поточній сторінці. Javascript метод scrollIntoView() прокручує сторінку, доки згаданий елемент не буде повністю видно:

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

Аналіз результатів: Ось вихідні дані, коли ви виконуєте наведений вище сценарій.

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

Дізнатися більше про JavaScriptExecutor

Поширені запитання

Використовуйте від’ємне значення пікселя з window.scrollBy, наприклад, js.executeScript з window.scrollBy(0,-1000). Від’ємне значення y переміщує сторінку вгору, на відміну від позитивного значення, яке прокручує вниз.

Так. Ви можете надсилати елементу Keys.PAGE_DOWN, Keys.END або клавіші зі стрілками, або використовувати клас Actions у Selenium 4. JavascriptВиконавець залишається найгнучкішим варіантом.

Браузери захоплюють лише видиму область перегляду, тому скрипти прокручують сторінку, захоплюють розділи та зшивають їх. Прокручування також запускає відкладене завантаження зображень та контенту перед скріншотом.

Так. Помічники ШІ створюють фрагменти scrollBy, scrollIntoView та scrollTo зі звичайних інструкцій та пояснюють математику пікселів. Revпереглядайте локатори та умови очікування, перш ніж запускати їх у своєму наборі.

Інструменти на основі штучного інтелекту виявляють, коли завантаження нового контенту припиняється, динамічно регулюють глибину прокручування та інтелектуально очікують на елементи. Це автоматизує тестування стрічок з нескінченною прокруткою без жорстко запрограмованого підрахунку пікселів.

scrollBy переміщує сторінку на фіксовану кількість пікселів від поточної позиції. scrollIntoView прокручує, доки не стане видимим певний елемент. Використовуйте scrollBy для визначення відстані та scrollIntoView для визначення цільових елементів.

Підсумуйте цей пост за допомогою: