Trước đây khi mới học Selenium Webdriver chắc hẳn các bạn mắc 1 vấn đề mà cảm thấy khá khó chịu, đó là quản lý version của Driver đúng không.
System.setProperty("webdriver.chrome.driver", "resources\\drivers\\chromedriver.exe");
Nếu chúng ta không xác định được đường dẫn này hoặc nếu chúng ta cung cấp đường dẫn sai, thì tập lệnh sẽ tạo ra lỗi, như được hiển thị bên dưới.
Cái bất lợi nữa là cái file nó tải về mắc công thấy bà ahahaha. Thôi giờ làm như này...
WebDriverManager trong Selenium, như đã đề cập ở trên, là một lớp cho phép chúng ta tải xuống và cài đặt các tệp nhị phân trình điều khiển (banary drivers) của trình duyệt.
Thay cái câu setup cũ System.setProperty() với câu mới như này
WebDriverManager.chromedriver().setup();
(Nó sẽ đặt trình duyệt Chrome để khởi tạo)
Ngoài ra thì thay chromedriver bằng các Browser khác: Firefox, Microsoft Edge, Internet Explorer, Opera, or PhantomJS.
Rồi tiếp theo xuống dòng lệnh dưới đó chỉ cần khởi tạo browser cho biến driver:
driver = new ChromeDriver();
Vậy tính ra nó chỉ cần 2 dòng duy nhất là chơi thả ga =))
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
Nếu bạn cài từ Maven thì truy cập thư viện tại https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager
Ngoài ra thì nếu Selenium Java thì cần thêm 2 cái thư viện SLF4J để không bị warning, vì nó là thư viện bổ trợ đi kèm.
<!-- https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager -->
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.16</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.16</version>
</dependency>
1. Tải xuống phiên bản mới nhất của WebDriverManager, như được đánh dấu bên dưới (hoặc bất kỳ phiên bản nào theo yêu cầu của dự án) từ đây ==> WebDriverManager
Lưu ý: cứ bản mới nhất mà chơi nhé (đừng theo version trong bài post này, kẻo bị cũ)
2. Nó sẽ tải xuống một tệp zip. Bây giờ giải nén tệp jar / zip. Nó sẽ hiển thị nhiều file jar khác nhau trong thư mục, như hình dưới đây:
Nếu mà cái file "slf4j-api-2.0.7" bị thiếu (hoặc version chưa đúng) thì vào đây tải lại version mới nhất ==> SLF4J API
Lưu ý: chọn phiên bản SLF4J version 2.x.x mới nhất cho ngon lành nhé (khoang vội dùng bản 3x)
Và các bạn có thể thêm thằng SLF4J Simple Provider luôn đề phòng thiếu sót hoặc warning gây ngứa mắt 😄
Cứ bản mới nhất mà chơi nhé !!
3. Chèn tất cả các file Jar trong folder trên vào Project của mình: Click phải vào tên Project -> Build Path -> Configure Build Path in Eclipse
4. Triển khai code thôi chứ còn gì đâu nữa =))
Ví dụ khởi tạo Chrome như này:
import org.openqa.selenium.WebDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.chrome.ChromeDriver;
import io.github.bonigarcia.wdm.WebDriverManager;
public class UseWebdriverManager {
static WebDriver driver;
public static void main(String[] args) throws Exception {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.navigate().to("https://anhtester.com/");
Thread.sleep(2000);
driver.quit();
}
}
Mấy thằng Browser khác thì đổi tên như bên trên đã nói thôi.
Ừ mà nhớ đổi cái dòng khởi tạo bên dưới nhe chời: ChromeDriver(), FirefoxDriver(), EdgeDriver(),...
Rồi thôi vậy là xong.
Chạy thử thì nếu mà nó chưa có version phù hợp với Browser hiện tại thì nó sẽ download về rồi lưu vào local máy:
[main] INFO io.github.bonigarcia.wdm.WebDriverManager - Using chromedriver 92.0.4515.43 (resolved driver for Chrome 92)
[main] INFO io.github.bonigarcia.wdm.WebDriverManager - Exporting webdriver.chrome.driver as C:\Users\votha\.cache\selenium\chromedriver\win32\92.0.4515.43\chromedriver.exe
Starting ChromeDriver 92.0.4515.43 (8c61b7e2989f2990d42f859cac71319137787cce-refs/branch-heads/4515@{#306}) on port 4653
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
thg 7 28, 2021 12:49:09 SA org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Có thể tải xuống WebDriverManager.Net từ NuGet. Sử dụng GUI hoặc lệnh sau trong Bảng điều khiển Trình quản lý Gói:
PM> Install-Package WebDriverManager
Cách nữa là cài trực tiếp từ Nuget trong IDE. Các bước để định cấu hình WebDriverManager:
1) Khởi chạy Visual Studio, mở Project
2) Select "Tools" => "NuGet Package Manager" => "Manage NuGet Packages for Solution" như bên dưới:
3) Nhập 'WebDriverManager' vào trường hộp Tìm kiếm của tab Trình duyệt, Nhấn phím 'Enter' trên bàn phím của bạn để tìm kiếm, nhấp vào tùy chọn 'WebDriverManager' được hiển thị trong kết quả tìm kiếm, chọn hộp kiểm Project và nhấp vào 'Install' như hình dưới:
Lưu ý: cứ bản mới nhất mà chơi nhé
4) Nhấp vào nút ‘OK’ trên hộp thoại ‘Preview Changes’ được hiển thị như hình dưới:
5) Quan sát rằng WebDriverManager sẽ được cài đặt và sau đó chuyển sang tệp program.cs hay tệp code auto nào đó bất kỳ khi Setup môi trường như hình dưới đây:
6) Sau khi cài đặt xong để sử dụng WebdriverManager thì dùng lệnh sau:
new WebDrivereManager.DriverManager().SetUpDriver(new ChromeConfig());
Nó sẽ khởi tạo Chrome driver thay cho chromedriver.exe và nó tự động cập nhật version phù hợp với Google Chrome hiện tại của bạn đang dùng.
7) Di chuột trên ChromeConfig và chọn tùy chọn để nhập "using WebDriverManager.DriverConfigs.Impl;" như hình dưới:
8) Bây giờ, hãy tạo một đối tượng cho lớp ChromeDriver, nhập ChromeDriver như đã giải thích trong các bài viết trước rồi Lưu & nhấp vào nút "Start" để thực thi như được hiển thị bên dưới:
new WebDriverManager.DriverManager().SetUpDriver(new FirefoxConfig());
FirefoxDriver driver = new FirefoxDriver();
new WebDriverManager.DriverManager().SetUpDriver(new InternetExplorerConfig());
InternetExplorerDriver driver = new InternetExplorerDriver();
Rồi. Vậy là xong.
Anh Tester
Đường dẫu khó chân vẫn cần bước đi
Đời dẫu khổ tâm vẫn cần nghĩ thấu