Cách cuộn xuống hoặc lên trang trong Selenium webdriver

⚡ Tóm tắt thông minh

Cuộn trang trong Selenium WebDriver sử dụng JavascriptGiao diện thực thi để chạy JavaSử dụng lệnh cuộn bằng script vì WebDriver thao tác trực tiếp với DOM. Bốn kịch bản thực tế bao gồm cuộn theo pixel, đến một phần tử, đến cuối trang và cuộn ngang.

  • 📜 JavascriptNgười thi hành: Chạy JavaCác lệnh cuộn qua tập lệnh Selenium WebDriver.
  • 🔢 Cuộn từng pixel: window.scrollBy(x,y) di chuyển trang một số pixel nhất định.
  • 🎯 Cuộn đến phần tử: Hàm scrollIntoView() sẽ cuộn cho đến khi phần tử mục tiêu hiển thị hoàn toàn.
  • ⬇️ Kéo xuống cuối trang: scrollTo với document.body.scrollHeight sẽ đạt đến cuối trang.
  • ↔️ Cuộn ngang: scrollIntoView cũng di chuyển sang ngang đến các phần tử nằm ngoài màn hình.
  • 🧭 Các thao tác cơ bản với thanh cuộn: Cuộn chuột sẽ hiển thị các phần tử chỉ được tải khi chúng xuất hiện trong tầm nhìn.

Cuộn xuống hoặc lên trang trong Selenium webdriver

Cuộn vào Selenium

Để cuộn bằng cách sử dụng Selenium, Bạn có thể sử dụng JavaGiao diện ScriptExecutor giúp thực thi JavaPhương pháp kịch bản thông qua Selenium webdriver

Cú pháp:

JavascriptExecutor js = (JavascriptExecutor) driver;  
   js.executeScript(Script,Arguments);
  • Kịch bản – Đây là JavaTập lệnh cần thực thi.
  • Đối số - Đó là đối số cho tập lệnh. Đó là tùy chọn.

Thanh cuộn là gì?

Thanh cuộn cho phép bạn di chuyển xung quanh màn hình theo hướng ngang hoặc dọc nếu cuộn trang hiện tại không vừa với vùng hiển thị của màn hình. Nó được sử dụng để di chuyển cửa sổ lên xuống.

Selenium Webdriver không yêu cầu cuộn để thực hiện các hành động vì nó thao tác với DOM. Nhưng trong một số trang web nhất định, các phần tử chỉ hiển thị khi người dùng cuộn đến chúng. Trong những trường hợp như vậy, việc cuộn có thể cần thiết.

Thanh cuộn có hai loại: Ngangthẳng đứng thanh cuộn như trong ảnh chụp màn hình bên dưới.

thanh cuộn

thanh cuộn

Selenium Tập lệnh để cuộn xuống trang

Chúng ta hãy xem cách cuộn xuống một trang web bằng trình điều khiển selenium với 4 tình huống sau:

  • Kịch bản 1: Để cuộn trang web xuống theo pixel.
  • Kịch bản 2: Để cuộn xuống trang web theo mức độ hiển thị của phần tử.
  • Kịch bản 3: Để cuộn trang web xuống cuối trang.
  • Tình huống 4: Cuộn ngang trên trang web.

Kịch bản 1: Để cuộn trang web xuống theo pixel.

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 DescriptionTrong đoạn mã trên, trước tiên chúng ta khởi chạy ứng dụng đã cho. URL Trong trình duyệt Chrome. Tiếp theo, cuộn trang đi 1000 pixel thông qua executeScript. Javascript phương thức ScrollBy() cuộn trang web đến số pixel cụ thể.

Cú pháp của phương thức ScrollBy() là:

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

x-pixel là số tại trục x, nó di chuyển sang trái nếu số dương và nó di chuyển sang phải nếu số âm. y-pixel là số tại trục y, nó di chuyển xuống dưới nếu số là dương và nó di chuyển lên trên nếu số âm.

Ví dụ:

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

Phân tích đầu ra: Đây là kết quả khi bạn thực thi đoạn script trên.

Cuộn xuống trang web theo pixel

Kịch bản 2: Để cuộn xuống trang web theo mức độ hiển thị của phần tử.

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 Description: Trong đoạn mã trên, trước tiên chúng tôi khởi chạy url đã cho trong trình duyệt Chrome. Tiếp theo, cuộn trang cho đến khi phần tử được đề cập hiển thị trên trang hiện tại. Javascript phương thức ScrollIntoView() cuộn trang cho đến khi phần tử được đề cập ở chế độ xem đầy đủ:

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

“arguments[0]” nghĩa là chỉ mục đầu tiên của trang bắt đầu từ 0.

Trong đó “Phần tử” là công cụ định vị trên trang web.

Phân tích đầu ra: Đây là kết quả khi bạn thực thi đoạn script trên.

 Cuộn xuống trang web theo khả năng hiển thị của phần tử

Kịch bản 3: Để cuộn trang web xuống cuối trang.

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 Description : Trong đoạn mã trên, trước tiên chúng tôi khởi chạy url đã cho trong trình duyệt Chrome. Tiếp theo, cuộn đến cuối trang. Javascript phương thức ScrollTo() cuộn đến cuối trang.

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

“document.body.scrollHeight” trả về chiều cao đầy đủ của nội dung, tức là trang web.

Phân tích đầu ra: Đây là kết quả khi bạn thực thi đoạn script trên.

Cuộn xuống trang web ở cuối trang

Tình huống 4: Cuộn ngang trên trang web

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 Description : Trong đoạn mã trên, trước tiên chúng tôi khởi chạy url đã cho trong trình duyệt Chrome. Tiếp theo, cuộn trang theo chiều ngang cho đến khi phần tử được đề cập hiển thị trên trang hiện tại. Javascript phương thức ScrollIntoView() cuộn trang cho đến khi phần tử được đề cập ở chế độ xem đầy đủ:

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

Phân tích đầu ra: Đây là kết quả khi bạn thực thi đoạn script trên.

Cuộn ngang trên trang web

Tìm hiểu thêm về JavaScriptExecutor

Câu Hỏi Thường Gặp

Sử dụng giá trị pixel âm với window.scrollBy, ví dụ: js.executeScript với window.scrollBy(0,-1000). Giá trị y âm sẽ di chuyển trang lên trên, ngược lại với giá trị dương sẽ cuộn xuống dưới.

Đúng vậy. Bạn có thể gửi các sự kiện Keys.PAGE_DOWN, Keys.END hoặc các phím mũi tên đến một phần tử, hoặc sử dụng lớp Actions trong đó. Selenium 4. JavascriptExecutor vẫn là lựa chọn linh hoạt nhất.

Trình duyệt chỉ chụp lại phần hiển thị trên màn hình, vì vậy các đoạn mã sẽ cuộn trang, chụp các phần và ghép chúng lại với nhau. Việc cuộn trang cũng kích hoạt việc tải chậm hình ảnh và nội dung trước khi chụp ảnh màn hình.

Đúng vậy. Trợ lý AI tạo ra các đoạn mã scrollBy, scrollIntoView và scrollTo từ các lệnh đơn giản và giải thích cả phép toán pixel. RevHãy xem xét các bộ định vị và điều kiện chờ trước khi chạy chúng trong bộ kiểm thử của bạn.

Các công cụ dựa trên trí tuệ nhân tạo phát hiện khi nội dung mới ngừng tải, điều chỉnh độ sâu cuộn một cách linh hoạt và chờ đợi các phần tử một cách thông minh. Điều này tự động hóa việc kiểm tra các nguồn cấp dữ liệu cuộn vô hạn mà không cần mã hóa cứng số lượng pixel.

`scrollBy` di chuyển trang một số pixel cố định so với vị trí hiện tại. `scrollIntoView` cuộn trang cho đến khi một phần tử cụ thể hiển thị. Sử dụng `scrollBy` để đo khoảng cách và `scrollIntoView` để nhắm mục tiêu vào các phần tử.

Tóm tắt bài viết này với: