Tải Geckodriver cho Firefox & Selenium webdriver

GeckoDriver trong gì Selenium?

Thuật ngữ Gecko là viết tắt của một công cụ Trình duyệt Web được tích hợp sẵn trong Mozilla Firefox trình duyệt. Trình điều khiển Gecko hoạt động như một proxy giữa các máy khách được kích hoạt Trình điều khiển Web(Eclipse, Netbeans, v.v.) và Mozilla Firefox trình duyệt. Tóm lại, trình điều khiển Gecko hoạt động như một liên kết giữa Selenium Kiểm tra trình điều khiển web và Mozilla Firefox trình duyệt.

Trước Selenium 3, Mozilla Firefox trình duyệt là trình duyệt mặc định cho Selenium. Sau Selenium 3, người kiểm thử cần khởi tạo script để sử dụng Firefox sử dụng GeckoDriver một cách rõ ràng. Selenium sử dụng giao thức W3C Webdriver để gửi yêu cầu tới GeckoDriver, dịch chúng thành giao thức có tên Marionette. Firefox sẽ hiểu các lệnh được truyền dưới dạng Marigiao thức onette và thực thi chúng.

GeckoDriver trong Selenium

Cách tải xuống và cài đặt GeckoDriver trong Selenium

Gecko Driver có sẵn dưới dạng tệp thực thi có thể tải xuống trên hệ thống. Sau đây là danh sách các bước để tải xuống trình điều khiển gecko.

Bước 1 ) Chọn phiên bản phù hợp.
Tại trang này https://github.com/mozilla/geckodriver/releases ,Chọn phiên bản phù hợp để tải xuống GeckoDriver dựa trên hệ điều hành của bạn

Tải xuống và cài đặt GeckoDriver trong Selenium

Bước 2) Giải nén tệp ZIP.
Sau khi quá trình tải xuống tệp ZIP hoàn tất, hãy giải nén nội dung của Tệp ZIP vào một thư mục tệp

Tải xuống và cài đặt GeckoDriver trong Selenium

Bước 3) Lưu ý vị trí.
Lưu ý vị trí bạn đã trích xuất trình điều khiển. Vị trí sẽ được sử dụng sau để khởi tạo trình điều khiển.

Tải xuống và cài đặt GeckoDriver trong Selenium

Các cách khởi tạo GeckoDriver

Có ba cách khác nhau để khởi tạo GeckoDriver.

1. Sử dụng khả năng mong muốn

Đầu tiên, đặt thuộc tính hệ thống cho Gecko Driver.

Cú pháp:

System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");

Ví dụ:

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

Tiếp theo, đặt Khả năng mong muốn.

Trợ giúp về khả năng mong muốn Selenium để hiểu tên trình duyệt, phiên bản và hệ điều hành để thực hiện kiểm tra tự động. Dưới đây là mã để đặt trình điều khiển tắc kè sử dụng lớp DesiredCapabilities.

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);

Đây là mã hoàn chỉnh

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

2. Sử dụng tính chất rối

Trình điều khiển tắc kè cũng có thể được khởi tạo bằng thuộc tính marionette như bên dưới

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

Nếu trình điều khiển tắc kè được khởi tạo bằng phương pháp trên, mã cho các khả năng mong muốn là không yêu cầu.

3. Sử dụng FirefoxCác lựa chọn

Mozilla Firefox phiên bản 47+ có trình điều khiển marionette như một hệ thống cũ. Lợi dụng điều này, trình điều khiển marionette có thể được gọi bằng cách sử dụng Firefox Tùy chọn như dưới đây

FirefoxOptions options = new FirefoxOptions();
options.setLegacy(true);

Mã để khởi chạy firefox bằng trình điều khiển Gecko

package com.guru99.demo;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class GeckoDriverDemo {

    String driverPath = "D:\\Guru99Demo\\GeckoDriver.exe";
    public WebDriver driver;

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", driverPath);
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setCapability("marionette", true);
        driver = new FirefoxDriver(capabilities);

    }

    @Test
    public void navigateToUrl() {
        driver.get("http://demo.guru99.com/selenium/guru99home/");
    }

    @After
    public void endTest() {
        driver.quit();
    }

}

Giải thích mã

@Trước phương pháp

Ban đầu, chúng ta cần đặt thuộc tính hệ thống cho trình điều khiển tắc kè thành vị trí tải xuống tệp geckdriver.exe. Chúng ta cần đặt thuộc tính marionette thành true cho Selenium sử dụng Marigiao thức onette để giao tiếp với Gecko Driver. Cuối cùng, chúng ta cần bắt đầu Firefox phiên bản trình duyệt sử dụng đối tượng cho Khả năng mong muốn.

Các tuyên bố dưới đây giúp đạt được nhiệm vụ trên.

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

@Phương pháp kiểm tra

Chúng tôi đang điều hướng đến URL do người dùng chỉ định bằng phương thức “get” sẵn có được cung cấp bởi Selenium trình điều khiển web. Tuyên bố dưới đây giúp đạt được điều tương tự.

driver.get("http://demo.guru99.com/selenium/guru99home/");

Phương thức @After

Cuối cùng, chúng ta đóng phiên bản trình duyệt bằng phương thức quit.

driver.quit();

Sửa đổi tập lệnh từ không phải Gecko thành Gecko

Tập lệnh trình điều khiển không phải tắc kè được sử dụng trước đây Selenium 3 rất đơn giản. Chúng ta cần tạo một thể hiện của Firefox driver và sử dụng biến thể hiện.

@Before
public void startBrowser() {
    driver = new FirefoxDriver();

}

Để chuyển đổi sang tắc kè, bạn chỉ cần thêm một dòng mã

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe");
        driver = new FirefoxDriver();

    }

Các trường hợp ngoại lệ thường gặp xảy ra khi sử dụng Trình điều khiển Gecko

Sau đây là danh sách các trường hợp ngoại lệ thường gặp khi sử dụng Gecko Driver và cách giải quyết.

Ngoại lệ này xảy ra khi người dùng cố gắng khởi tạo Firefox driver mà không thiết lập thuộc tính hệ thống cho trình điều khiển tắc kè. Việc này thường được thực hiện bởi những người mới bắt đầu Selenium những người không nhận thức được những thay đổi được thực hiện từ Selenium 3 để Selenium những phiên bản trước.

Cách giải quyết cho ngoại lệ trên là đặt thuộc tính hệ thống cho trình điều khiển tắc kè với vị trí của tệp geckodriver.exe như bên dưới

System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\geckodriver.exe");

Xin lưu ý rằng bạn cần đặt thuộc tính của trình điều khiển tắc kè trước khi tạo phiên bản Mozilla Firefox người lái xe.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

Ngoại lệ này thường xảy ra khi Firefox phiên bản đã được nâng cấp lên phiên bản mới nhất. Giải pháp cho ngoại lệ này là cập nhật tệp jar selen và trình điều khiển tắc kè lên phiên bản mới nhất và sử dụng tương tự.

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

Ngoại lệ này xảy ra do vấn đề tương thích giữa Selenium và tài xế Gecko. Trình điều khiển tắc kè hoạt động với Firefox phiên bản 47 trở lên. Nó có thể được giải quyết bằng cách cập nhật Firefox phiên bản từ 47 trở lên.

WebDriver Exception: Connection Refused

Ngoại lệ này là thông báo được tạo khi trình điều khiển web không thể thiết lập kết nối với Firefox. Có thể giải quyết vấn đề này bằng bất kỳ kỹ thuật nào sau đây.

  • Sử dụng driver.quit() phương pháp tiêu diệt các phiên bản trước đó của trình điều khiển web
  • Làm sạch bộ đệm của trình duyệt trước khi thực hiện các bài kiểm tra tự động của bạn
  • Làm sạch không gian làm việc của dự án trong Eclipse IDE
  • Luôn sử dụng phiên bản mới nhất của trình điều khiển selen gecko và phiên bản mới nhất của Firefox trình duyệt

Ưu điểm khi sử dụng Gecko Driver

Selenium Phiên bản Webdriver 2.53 không tương thích với Mozilla Firefox phiên bản 47.0+. Các Firefox trình điều khiển được sử dụng trong các phiên bản trước của Mozilla Firefox sẽ bị ngừng và chỉ triển khai GeckoDriver mới được sử dụng. Do đó, người thử nghiệm buộc phải sử dụng GeckoDriver nếu họ muốn chạy thử nghiệm tự động trên Mozilla Firefox phiên bản 47.0+. Nhưng câu hỏi lớn – lợi thế là gì?

Ưu điểm chính của việc sử dụng GeckoDriver so với mặc định Firefox tài xế là Khả năng tương thích. Công dụng của GeckoDriver Giao thức W3C WebDriver giao tiếp với Selenium. W3C là một tiêu chuẩn được xác định phổ biến cho Web Driver. Điều này có nghĩa là Selenium Nhà phát triển (Những người viết mã Selenium base) không cần tạo phiên bản Trình điều khiển Web mới cho từng phiên bản trình duyệt. Có thể sử dụng cùng một Trình điều khiển Web cho nhiều phiên bản trình duyệt. Do đó, GeckoDriver được ưu tiên hơn so với việc triển khai trước đó Firefox người lái xe.