14

Tuần trước đã có rất nhiều tiếng ồn về FirefoxDriver mới này được gọi là Marionette. Để sử dụng Firefox với Selenium, chúng tôi đã sử dụng Selenium FirefoxDriver "cũ". Từ Firefox 48.0 trở đi, nó sẽ được yêu cầu sử dụng FirefoxDriver mới này do Mozilla phát triển.Lợi ích của việc sử dụng Marionetriver Marionette thay vì Selenium FirefoxDriver cũ cho một thử nghiệm Selenium là gì?

Tôi hiểu rằng cần phải thay đổi theo hướng đó để mọi trình duyệt hỗ trợ và phát triển trình điều khiển của nó và để có được trình điều khiển độc lập với Selenium. Ngoài ra, nếu Mozilla phát triển trình điều khiển riêng của mình thì sẽ nhanh hơn và dễ dàng hơn trong việc khắc phục các vấn đề và phát triển các tính năng.

Câu hỏi của tôi là, đối với những người tạo thử nghiệm tự động bằng cách sử dụng khung Selenium, có lợi ích gì khi sử dụng Marionette thay vì hỗ trợ Selenium "cũ" không? _ (Chẳng hạn như hiệu suất tốt hơn, khả năng tương thích tốt hơn ...)

+4

Cử tri gần gũi có thể bị cám dỗ giả định câu hỏi là "quá rộng". Nó không phải. Có một lý do đơn giản và kỹ thuật tại sao phương pháp tiếp cận mới này là bắt buộc. Tôi đã vạch ra nó trong câu trả lời của tôi. – JimEvans

Trả lời

23

Ưu điểm chính của việc sử dụng giải pháp Geckodriver dựa trên giao thức do Mozilla cung cấp là nó hoạt động cho các phiên bản Firefox 48 trở lên. Trình điều khiển cũ được cung cấp và duy trì bởi dự án Selenium không hoạt động cho Firefox 48 trở lên và sẽ không bao giờ hoạt động đối với các phiên bản Firefox đó.

Trình điều khiển cũ được triển khai dưới dạng tiện ích mở rộng của Firefox. Phần mở rộng này được cài đặt trong cấu hình được trình điều khiển sử dụng khi WebDriver khởi chạy Firefox. Firefox 48 đã giới thiệu hai tính năng mới đã tắt tiện ích trình duyệt này. Đầu tiên là tính năng "điện phân", hoặc đa xử lý Firefox. Điện phân thay đổi cách các phần mở rộng phải đối phó với trình duyệt theo cách mà nhóm Selenium đã không dành thời gian để hiểu đầy đủ.

Yêu cầu thứ hai, quan trọng hơn là tất cả các tiện ích mở rộng của trình duyệt phải được Mozilla ký trước khi trình duyệt cho phép chúng tải. Tính năng thứ hai này đã có trong Firefox cho một số phiên bản, nhưng bắt đầu bằng 48, nó không thể bị vô hiệu hóa nữa. Phần mở rộng trình duyệt WebDriver giới thiệu một số mối quan tâm bảo mật hợp lệ cho trình duyệt Firefox, và như vậy, sẽ không được ký bởi nhóm bảo mật của Mozilla. Điều này, đến lượt nó, làm cho phần mở rộng không hoạt động được, và do đó Selenium không thể giao tiếp với Firefox nữa. Các giải pháp dựa trên Marionette, được phát triển và duy trì bởi Mozilla ở nơi đầu tiên, được may mắn bởi họ để sử dụng trong tự động hóa Firefox, và như vậy mang một cam kết rằng nó sẽ tiếp tục làm việc với các phiên bản tương lai di chuyển về phía trước.

Vì vậy, lợi ích chính của việc sử dụng Marionette với Firefox 48 trở lên là nó sẽ hoạt động, trong khi các giải pháp khác thì không.

+0

nếu Geckodriver dựa trên Marionette sẽ không được sử dụng như một phần mở rộng cho Firefox, cơ chế nào để thúc đẩy firefox? bất kỳ ví dụ đơn giản pls .. Bất kỳ ý tưởng nhỏ về điện phân trong trình điều khiển Marionette sẽ là tốt; như cách người lái xe tiếp quản trình duyệt Firefox. –

+2

Cơ chế được sử dụng để thúc đẩy trình duyệt hiện là một phần của Firefox. Nó được tích hợp vào trình duyệt, đó là lý do tại sao nó được Mozilla lưu trữ. Mã trình điều khiển của họ hoàn toàn là [mã nguồn mở] (https://github.com/mozilla/geckodriver) và tệp thực thi 'geckodriver' được cung cấp bởi chúng hoạt động như một dịch giả để thực hiện các cuộc gọi HTTP từ WebDriver để sử dụng giao thức truyền thông Marionette qua TCP mà trình duyệt hiểu nguyên bản. Tuy nhiên, nếu bạn đang sử dụng Selenium, người dùng không cần phải quan tâm đến các chi tiết cụ thể; nó sẽ hoạt động bằng cách sử dụng cùng một mã đã hoạt động trước đó. – JimEvans

+0

@JimEvans Tôi thấy selenium 3 đang sử dụng trình điều khiển marionette theo mặc định. Vì vậy, làm thế nào những thứ có thể làm việc với một bộ mã hiện có. [Tôi đang đối mặt với một vấn đề tương tự] (http://stackoverflow.com/questions/40086011/how-to-set-a-specific-download-location-in-mozilla-marionette-web-driver) –

Các vấn đề liên quan