Cách 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.
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("http://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 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 1000 pixel thông qua execScript. 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.
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("http://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.
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("http://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.
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("http://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.
Tìm hiểu thêm về JavaScriptExecutor
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: Ngang và thẳng đứng thanh cuộn như trong ảnh chụp màn hình bên dưới.
Tổng kết
- Trong hướng dẫn ở trên, chúng tôi minh họa việc cuộn trang web thông qua các tình huống khác nhau.
- Trong trường hợp đầu tiên, chúng tôi hiển thị thao tác cuộn xuống từng trang.
- Trong kịch bản thứ hai, chúng tôi hiển thị thao tác cuộn trang xuống cho đến khi hiển thị phần tử.
- Trong kịch bản thứ ba, chúng tôi hiển thị thao tác cuộn trang xuống cuối trang.
- Trong kịch bản thứ tư, minh họa cuộn ngang trên trang web.