Quản lý Webdriver version bằng WebdriverManager

Khi làm việc với selenium webdriver, mình luôn mắc 1 vấn đề mà mình cảm thấy khá khó chịu, đó là quản lý version của Driver:

  • Browser update liên tục nên driver cho từng browser cũng phải được update liên tục. Nếu ko update cùng version là thể nào cũng lỗi. haizzz

Vấn đề này được giải quyết bằng WebdriverManager, 1 thư viện giúp mình download và quản lý binary drivers (chromedrivergeckodriver…)

I. Cách install WebdriverManager

Sử dụng Maven hoặc Gradle:

Maven:

<dependency> 
 <groupid>io.github.bonigarcia</groupid> 
 <artifactid>webdrivermanager</artifactid> 
 <version>3.8.1</version> 
 <scope>test</scope> 
</dependency>

Gradle:

dependencies {
    testCompile("io.github.bonigarcia:webdrivermanager:3.8.1")
}

II. Cách sử dụng

    @BeforeAll
    public static void setupClass() {
        WebDriverManager.chromedriver().setup();
    }

    @BeforeEach
    public void setupTest() {
        driver = new ChromeDriver();
    }

    @AfterEach
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }
WebDriverManager.chromedriver().setup();

Đoạn code này sẽ làm 1 số việc

  • Check browser version hiện có của máy
  • Check version của driver, nếu không biết thì nó sẽ dùng version mới nhất
  • Download binary driver nếu không tìm thấy trong folder ( ~/.m2/repository/webdriver)
  • Tạo ra biến môi trường cho Webdriver, phục vụ cho selenium.

Và sau khi sử dụng thư viện này, bạn sẽ không phải download driver mỗi khi browser tăng version mới và dòng lệnh gây nhiều nhầm lẫn cho các bạn mới học.

System.setProperty("webdriver.chrome.driver", "/path/to/binary/chromedriver");

Bạn hoàn toàn có thể sử dụng các trình duyệt khác nếu muốn:

WebDriverManager.chromedriver().setup();
WebDriverManager.firefoxdriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.phantomjs().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.iedriver().setup();
WebDriverManager.chromiumdriver().setup();

Tuy nhiên, mình chưa test hết tất cả nên không sure những cái khác có work hay không. 😀

III. Tổng kết

Cái WebdriverManager này chủ yếu phục vụ cho việc download driver binary nên nếu bạn nào cần parameterize browsers (ví dụ: chọn browser từ dòng lệnh command line hoặc điền browser muốn run ở config file) thì sẽ viết thêm 1 chút nữa. Dù gì thì làm việc với selenium cũng đã nhẹ nhàng hơn rất nhiều. 😀

5 thoughts on “Quản lý Webdriver version bằng WebdriverManager

  1. Mình dùng Maven và bị báo lỗi “The import io cannot be resolved”. Code của mình như sau

    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import io.github.bonigarcia.wdm.WebDriverManager;

    public class Browser {
    public WebDriver init (String browserName) {
    WebDriver driver = null;
    String browser = browserName.toLowerCase();

    switch (browser) {
    case “chrome”:
    WebDriverManager.chromedriver().setup();
    driver = new ChromeDriver();
    break;
    case “firefox”:
    WebDriverManager.firefoxdriver().setup();
    driver = new FirefoxDriver();
    break;
    }
    return driver;
    }
    }
    Vậy mình nên fix lỗi cannot be resolved này như thế nào? Mình cảm ơn.

    • Chào bạn, lỗi này là do không compile được code, do đoạn import kia đang không đúng. Mình nghĩ có 2 nguyên nhân:
      1. Bạn chưa điền đúng dependency name trong pom.xml. Bạn check lại xem có sai chính tả gì ko?
      2. Bạn đang dùng lib này ngoài scope của folder test: ví dụ src > main > java chẳng hạn. Vì khi khai báo dependency, minh có để scope của lib là test (test).
      –> Bạn có thể remove dòng này để lib có thể dùng được ở mọi nơi, hoặc chuyển đoạn code phía trên vào phần test: src > test > java.
      3. Ngoài lề: bạn nên dùng Enum thay cho String để switch-case.

      • Nó là nguyên nhân thứ 2.

        Mình cảm ơn suggestion dùng Enum, để mình google thêm cách sử dụng. Mình mới học automation (Java + Selenium Web Driver) khoảng 1 tháng gần đây thôi nên còn nhiều lơ ngơ. Bài viết của bạn dễ hiểu, mình theo từ bài đầu tiên ở phần Fundamental tới nay. Cảm ơn bạn đã dành thời gian, công sức viết bài, giúp đỡ những người như tụi mình 🙂

        • Cool ^^. Sắp tới mình sẽ còn viết thêm nhiều bài cho Selenium và các thứ liên quan nữa. Hi vọng bạn vẫn tiếp tục theo dõi. 😀

  2. Pingback: [Bài 2] Cài đặt môi trường cần thiết cho Selenium Webdriver | GiangTester Blog

Leave a Reply

Your email address will not be published. Required fields are marked *