Selenium WebDriver vẫn là framework testing dùng cho giao diện một cách phổ biến và rộng rãi nhất. Hiện tai seleniumđã ra mắt phiên bản 4, được đổi mới và trang bị nhiều tính năng mới. Dù vậy Selenium WebDriver vẫn cần được download trình điều khiển trình duyệt từ bên thứ ba (hoặc là webdrivers) và phải cấu hình khác nhau trong framework chỉ để sử dụng Selenium WebDriver. Và quan trọng là bạn cần phải nhớ để cập nhật WebDrivers mỗi khi trình duyệt được cập nhật version mới. Đôi khi việc cập nhật driver không đúng version với browser trên máy cũng như việc để đường dẫn đến driver sai sẽ dẫn đến việc chạy test bị fail.
Việc quản lý các drivers trong framework một cách thủ công cho việc kiểm thử tự động có vẻ hơi phiền phức và tốn công phải không?
Có một giải pháp để giải quyết vấn đề này đó là WebDriverManager – chúng ta sẽ cùng tìm hiểu về nó trong bài này nhé.
Nội dung
1. WebDriverManager là gì?
- WebDriverManager là một thư viện Java mã nguồn mở được thực hiện một cách tự động bốn bước (tìm, tải xuống, thiết lập và bảo trì) cho các trình điều khiển cần thiết khi dùng Selenium trong việc kiển thử.
- WebDriverManager cung cấp trình quản lý cho các trình duyệt như Chrome, Firefox, Edge ... Việc sử dụng của các trình quản lý này như sau:
WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
2. Lợi ích của WebDriverManager trong Selenium
- WebDriverManager tự động hóa việc quản lý các WebDriver binary, do đó không cần cài đặt một cách thủ công nữa.
- WebDriverManager tự kiểm tra version của trình duyệt được cài đặt trên máy của bạn, tự tìm và tải xuống các driver binary tương thích vào bộ nhớ cache cục bộ (~/.cache/selenium theo mặc định) nếu chưa có. Nếu không tìm thấy driver binary tương ứng, nó sử dụng driver có version mới nhất
- WebDriverManager cung cấp thử nghiệm giữa các trình duyệt khác nhau mà bạn không cần cài đặt và duy trì các driver binary của các trình duyệt khác nhau.
- WebDriverManager có thể các trình duyệt (browsers) trong Docker containers.
3. Cách sử dụng WebDriverManager trong Selenium WebDriver
3.1. Cài đặt WebDriverManager
- Việc cài đặt WebDriverManager trong Selenium rất đơn giản. Nếu bạn đang sử dụng một Maven project, thì bạn cần truy cập mvnrepository và tìm WebDriverManager dependence và thêm vào file pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.5.2</version>
</dependency>
</dependencies>
</project>
3.2. Sử dụng WebDriverManager trong Selenium WebDriver
- Với cách thông thường của selenium webdriver, muốn load trình duyệt (ví dụ: chrome), trước tiên bạn cần download chromedriver về máy, sau đó khởi tạo driver như sau:
System.setProperty("webdriver.chrome.driver", "D:\PROJECTS\chromedriver.exe");
WebDriver driver = new ChromeDriver();
- Thì khi sử dụng WebDriverManager bạn sẽ thay bằng đoạn code sau:
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
- Sau đây là đoạn code sample:
package org.example;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
// Path to the Chrome Driver.
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://demo.guru99.com/v4/");
driver.manage().window().maximize();
// Find element by link text
WebElement ele_UserID = driver.findElement(By.xpath("//td[text()='UserID']"));
System.out.println(ele_UserID.getText());
}
}
3.3. Khởi tạo trình duyệt với version cụ thể
- Khi sử dụng WebDriverManager, nó sẽ mặc định tải xuống phiên bản mới nhất của driver binary theo trình duyệt. Nếu muốn sử dụng một phiên bản trình duyệt cụ thể, bạn có thể thêm như sau
- Ví dụ: bạn muốn chạy chromeDriver có Driver version “107.0.5304.62”, thì sẽ viết:
WebDriverManager.chromedriver().driverVersion("107.0.5304.62").setup();
- Kết quả chạy bạn sẽ thấy ChromeDriver 107.0.5304.62 được bật như hình bên dưới.
4. Lưu ý
Nếu các bạn dùng Selenium từ version 4.6 trở về sau, bản thân Selenium đã quản lý luôn webdriver. Nghĩa là lúc này trong code của bạn:
- Không cần download .exe files như chromedriver.exe/geckodriver.exe/…
- Không cần set System Property
- Không cần sử dụng library webdrivermanager để quản lý driver.
Ví dụ:
package org.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class Main {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://demo.guru99.com/v4/");
driver.manage().window().maximize();
// Find element by link text
WebElement ele_UserID = driver.findElement(By.xpath("//td[text()='UserID']"));
System.out.println(ele_UserID.getText());
}
}
Chúc các bạn thành công.
Nguồn: