Gecko (Marionette) Driver Selenium: Tải xuống, Cài đặt, Sử dụng với Firefox

Mục lục:

Anonim

Gecko Driver là gì?

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 trình duyệt Mozilla Firefox. Trình điều khiển Gecko hoạt động như một proxy giữa các máy khách hỗ trợ Trình điều khiển Web (Eclipse, Netbeans, v.v.) và trình duyệt Mozilla Firefox. Nói tóm lại, trình điều khiển Gecko hoạt động như một liên kết giữa các bài kiểm tra Trình điều khiển Web Selenium và trình duyệt Mozilla Firefox.

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

Lợi thế của việc sử dụng Gecko Driver

Selenium Webdriver phiên bản 2.53 không tương thích với Mozilla Firefox phiên bản 47.0+. Trình điều khiển Firefox được sử dụng trong các phiên bản Mozilla Firefox trước đó sẽ bị ngừng và chỉ triển khai GeckoDriver sẽ được sử dụng. Do đó, người kiểm tra buộc phải sử dụng GeckoDriver nếu họ muốn chạy kiểm tra 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 trái ngược với trình điều khiển Firefox mặc định là Khả năng tương thích . GeckoDriver sử dụng giao thức W3C WebDriver để giao tiếp với Selenium. W3C là một tiêu chuẩn được xác định chung cho Trình điều khiển Web. Điều này có nghĩa là Nhà phát triển Selenium (Những người viết mã cơ sở Selenium) không cần tạo phiên bản Trình điều khiển web mới cho mỗi 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ình điều khiển Firefox trước đó.

Tải xuống và cài đặt trình điều khiển Gecko:

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) Tại trang này https://github.com/mozilla/geckodriver/releases, Chọn phiên bản thích hợp để tải xuống GeckoDriver dựa trên hệ điều hành của bạn

Bước 2) 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

Bước 3) Ghi lại vị trí mà 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.

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", "Đường dẫn đến tệp geckdriver.exe");

Thí dụ:

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

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

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

Khả năng mong muốn của khả năng = Des mong muốnCapabilities.firefox ();functions.setCapability ("marionette", true);

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

System.setProperty ("webdriver.gecko.driver", driverPath);Khả năng mong muốn của khả năng = Des mong muốnCapabilities.firefox ();functions.setCapability ("marionette", true);driver = new FirefoxDriver (khả năng);

2. Sử dụng thuộc tính marionette:

Trình điều khiển Gecko 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, thì không cần mã cho các khả năng mong muốn .

3. Sử dụng FirefoxOptions:

Mozilla Firefox phiên bản 47+ có trình điều khiển marionette như một hệ thống kế thừa. Tận dụng điều này, trình điều khiển marionette có thể được gọi bằng Firefox Options như bên dưới

Tùy chọn FirefoxOptions = new FirefoxOptions ();options.setLegacy (true);

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

gói com.guru99.demo;nhập khẩu org.junit.After;nhập khẩu org.junit.Before;nhập khẩu org.junit.Test;nhập org.openqa.selenium.WebDriver;nhập org.openqa.selenium.firefox.FirefoxDriver;nhập org.openqa.selenium.remote.DesosystemCapabilities;lớp công khai GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";trình điều khiển WebDriver công khai;@Trướcpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", driverPath);Khả năng mong muốn của khả năng = Des mong muốnCapabilities.firefox ();functions.setCapability ("marionette", true);driver = new FirefoxDriver (khả năng);}@Kiểm trapublic void NavigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Saupublic void endTest () {driver.quit ();}}

Giải thích mã:

@ Phương pháp trước:

Ban đầu, chúng ta cần đặt thuộc tính hệ thống cho trình điều khiển gecko 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 giao thức Marionette để giao tiếp với Gecko Driver. Cuối cùng, chúng ta cần khởi động phiên bản trình duyệt Firefox bằng cách sử dụng đối tượng cho Khả năng mong muốn.

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

System.setProperty ("webdriver.gecko.driver", driverPath);Khả năng mong muốn của khả năng = Des mong muốnCapabilities.firefox ();functions.setCapability ("marionette", true);driver = new FirefoxDriver (khả năng);

@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" có sẵn do trình điều khiển web Selenium cung cấp. 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 pháp sau:

Cuối cùng, chúng tôi đang đóng phiên bản trình duyệt bằng cách sử dụng phương pháp thoát.

driver.quit ();

Sửa đổi tập lệnh cho 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 Selenium 3 rất đơn giản. Chúng ta cần tạo một phiên bản trình điều khiển Firefox và sử dụng biến phiên bản.

@Trướcpublic void startBrowser () {driver = new FirefoxDriver ();}

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

@Trướcpublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Downloads \\ GeckoDriver.exe");driver = new FirefoxDriver ();}

Các trường hợp ngoại lệ phổ biến xảy ra khi sử dụng Gecko Driver:

Sau đây là danh sách các trường hợp ngoại lệ phổ biến xảy ra khi sử dụng Trình điều khiển Gecko và với độ phân giải.

1. Đường dẫn đến tệp thực thi trình điều khiển phải được đặt bởi thuộc tính hệ thống webdriver.gecko.driver:

Ngoại lệ này xảy ra khi người dùng cố gắng khởi tạo trình điều khiển Firefox mà không đặt thuộc tính hệ thống cho trình điều khiển tắc kè. Điều này thường được thực hiện bởi những người mới bắt đầu sử dụng Selenium, những người không biết về những thay đổi được thực hiện từ Selenium 3 sang Selenium phiên bản trước.

Giải pháp cho trường hợp ngoại lệ trên là đặt thuộc tính hệ thống cho trình điều khiển gecko 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 của trình điều khiển Mozilla Firefox.

2. Ngoại lệ Firefox Not Connected Exception:

org.openqa.selenium.firefox.NotConnectedException: Không thể kết nối với máy chủ 127.0.0.1 trên cổng 7055 sau 45000 ms.

Ngoại lệ này thường xảy ra khi phiên bản Firefox đã được nâng cấp lên phiên bản mới nhất. Giải pháp cho trường hợp 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 như cũ.

3. Phiên không được tạo Ngoại lệ:

org.openqa.selenium.SessionNotCreateException: Không thể tạo phiên từ xa mới.

Ngoại lệ này xảy ra do sự cố tương thích giữa trình điều khiển Selenium và Gecko. Trình điều khiển Gecko 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 phiên bản Firefox lên 47 hoặc cao hơn.

4. Ngoại lệ kết nối bị từ chối:

WebDriver Exception: Kết nối bị từ chối

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

  • Sử dụng phương thức driver.quit () để hủy các phiên bản trước của trình điều khiển web
  • Làm sạch bộ nhớ cache của trình duyệt trước khi thực hiện các thử nghiệm 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 tắc kè selen và phiên bản mới nhất của trình duyệt Firefox