WebDriver là gì? Tiêu chuẩn tự động hóa trình duyệt được giải thích
Trình duyệt thu thập mà không bị rác cung cấp cơ sở hạ tầng trình duyệt được quản lý cho các quy trình tự động hóa tách biệt logic khách hàng khỏi thực thi trình duyệt.
Tóm tắt
- WebDriver là một giao diện điều khiển từ xa cho các trình duyệt. Nó định nghĩa một giao thức trung lập về nền tảng và ngôn ngữ cho phép một client ngoài tiến trình chỉ dẫn và kiểm tra một tác nhân người dùng.
- WebDriver cổ điển sử dụng mô hình lệnh và phản hồi. Client tạo ra một phiên, gửi các lệnh HTTP, nhận kết quả hoặc lỗi có cấu trúc, và kết thúc phiên.
- Khả năng thương lượng môi trường phiên. Tên trình duyệt, phiên bản, nền tảng, proxy, hành vi nhắc nhở và tiện ích mở rộng của nhà cung cấp giúp khớp yêu cầu với một triển khai.
- Selenium là một hệ sinh thái client được xây dựng xung quanh WebDriver. Các ràng buộc Selenium và Grid làm cho giao thức trở nên dễ tiếp cận qua các ngôn ngữ và hạ tầng trình duyệt từ xa.
- WebDriver và WebDriver BiDi có liên quan nhưng khác nhau. WebDriver cổ điển vẫn định hướng lệnh, trong khi BiDi thêm một kết nối WebSocket, các lệnh không đồng bộ và sự kiện từ trình duyệt đến client.
WebDriver là hợp đồng giữa tự động hóa và trình duyệt
WebDriver cho phép một chương trình ngoài trình duyệt tạo một phiên và thực hiện các thao tác trình duyệt thông qua một giao diện có cấu trúc. Client có thể là một ràng buộc Selenium, một thư viện tự động hóa khác, một nền tảng kiểm thử, hoặc công cụ tùy chỉnh. Đầu từ xa có thể là một trình điều khiển trình duyệt hoặc triển khai tích hợp trong trình duyệt. Giao thức bao gồm điều hướng, cửa sổ, khung, phần tử, hành động đầu vào, thực thi script, cookie, ảnh chụp màn hình, nhắc nhở, thời gian chờ, in ấn, và lỗi. Bởi vì các thông điệp vượt qua một biên giới tiến trình, client và trình duyệt không cần sử dụng cùng một ngôn ngữ lập trình.
Quy định W3C WebDriver định nghĩa WebDriver như một giao thức dây trung lập về nền tảng và ngôn ngữ cho việc điều khiển trình duyệt từ xa. “Giao thức dây” có nghĩa là hợp đồng thông điệp tương tác, không phải là một API Java, Python hoặc JavaScript cụ thể. Các ràng buộc ngôn ngữ dịch các cuộc gọi phương thức thuận tiện thành các thao tác giao thức và dịch các phản hồi thành các đối tượng và ngoại lệ cụ thể của ngôn ngữ. Việc tách biệt này cho phép các công cụ và dịch vụ chia sẻ một bề mặt điều khiển trình duyệt chung.
Đầu địa phương, đầu từ xa, phiên và lệnh định nghĩa mô hình
Đầu địa phương là phía client khởi tạo các lệnh WebDriver. Đầu từ xa nhận chúng và kiểm soát tác nhân người dùng. Một yêu cầu phiên mới chứa các khả năng, và đầu từ xa trả về một định danh phiên cộng với môi trường được khớp. Các lệnh tiếp theo bao gồm định danh đó và hoạt động trong phiên. Đầu từ xa trả về giá trị thành công hoặc một payload lỗi tiêu chuẩn hóa. Xóa phiên phát hành tài nguyên trình duyệt của nó và không còn hiệu lực đối với các lệnh sau đó cho định danh đó.
Tổng quan về WebDriver MDN tóm tắt WebDriver như một giao diện điều khiển trình duyệt bên ngoài và phân biệt WebDriver cổ điển qua HTTP với WebDriver BiDi qua WebSocket. Định tuyến cổ điển ánh xạ các phương thức và đường dẫn HTTP vào các lệnh. Mô hình này được thiết kế đơn giản: gửi một thao tác, chờ phản hồi của nó, sau đó tiếp tục. Sự đơn giản này hỗ trợ khả năng tương tác nhưng không stream tự nhiên các sự kiện console, network, hoặc ngữ cảnh từ trình duyệt mà không có các phần mở rộng hoặc cơ chế bổ sung.
- Đầu địa phương. Client tự động hóa xây dựng các yêu cầu phiên và lệnh và diễn giải các phản hồi giao thức.
- Đầu từ xa. Triển khai phía trình duyệt xác thực các lệnh, vận hành tác nhân người dùng, và trả về các kết quả hoặc lỗi.
- ID phiên. Một định danh duy nhất xác định phạm vi các lệnh tiếp theo cho phiên trình duyệt và môi trường được thương lượng.
- Khả năng. Các giá trị được yêu cầu và khớp mô tả trình duyệt, nền tảng, proxy, hành vi nhắc nhở, và các tiện ích mở rộng.
- Điểm cuối lệnh. Một phương thức và lộ trình đã được định nghĩa đại diện cho một thao tác điều hướng, phần tử, đầu vào, script, cookie, cửa sổ, hoặc chụp.
Các phần tử và đầu vào vượt qua ranh giới tiến trình dưới dạng tham chiếu
Khi WebDriver tìm thấy một phần tử, đầu từ xa trả về một tham chiếu phần tử cấp giao thức thay vì chuyển đổi nút DOM vào tiến trình client. Các lệnh sau đó sử dụng tham chiếu đó để đọc trạng thái hoặc thực hiện đầu vào. Nếu trang điều hướng hoặc thay thế nút, tham chiếu có thể trở nên lỗi thời. Hành vi này giải thích tại sao mã tự động hóa nên xác định các phần tử gần với thao tác và chờ điều kiện trang làm cho chúng có liên quan hơn là lưu trữ các tay cầm qua các thay đổi lớn của ứng dụng.
Tham chiếu WebDriver MDN tài liệu các lệnh WebDriver, khả năng, và các loại lỗi tiêu chuẩn hóa. Các lỗi là một phần của hợp đồng khả năng tương tác: phiên không hợp lệ, phần tử lỗi thời, bộ chọn không hợp lệ, cảnh báo không mong đợi, thao tác không được hỗ trợ, và thời gian chờ cung cấp cho client một từ vựng chung. Các ràng buộc ngôn ngữ bọc chúng khác nhau, do đó các công cụ chẩn đoán nên giữ nguyên tên lỗi ban đầu, thông điệp, stack, phiên, lệnh, và môi trường trình duyệt khi có thể.
WebDriver chuẩn hóa các thao tác trình duyệt, không phải toàn bộ bộ kiểm thử
Giao thức định nghĩa biên giới điều khiển từ xa. Nhiều vấn đề kiểm thử nằm trên hoặc bên cạnh nó và phải được cung cấp bởi hệ sinh thái client.
| Mối quan tâm | Nơi nó thuộc về |
|---|---|
| Các lệnh trình duyệt | WebDriver định nghĩa các thao tác điều hướng, phần tử, đầu vào, script, cửa sổ, cookie, chụp, và phiên tương tác. |
| Khám phá kiểm thử | Một trình chạy kiểm thử hoặc lập lịch ứng dụng cụ thể cho ngôn ngữ tìm và sắp xếp các kiểm thử hoặc công việc. |
| Khẳng định | Khung kiểm thử hoặc thư viện khẳng định quyết định xem trạng thái trình duyệt quan sát có thỏa mãn kết quả mong đợi hay không. |
| Phân bổ từ xa | Selenium Grid hoặc một dịch vụ khác khớp các khả năng được yêu cầu với các môi trường trình duyệt có sẵn. |
| Di sản | Khung và dịch vụ trình duyệt quyết định cách mà ảnh chụp màn hình, nhật ký, video, dấu vết và báo cáo được lưu trữ. |
| Mô hình ứng dụng | Các đối tượng trang, thiết bị, dịch vụ miền và dữ liệu thử nghiệm mã hóa hành vi cụ thể cho sản phẩm đang được kiểm tra. |
Nơi mà Hợp đồng WebDriver Có Giá trị
WebDriver quan trọng nhất khi khả năng tương tác giữa các khách hàng, trình duyệt, ngôn ngữ, hoặc dịch vụ từ xa là một phần của kiến trúc.
Kiểm thử đa trình duyệt
Một mô hình khách hàng có thể yêu cầu các phiên từ các thực hiện cụ thể của trình duyệt và thực hiện hành vi người dùng chung trên ma trận trình duyệt cần thiết.
Dịch vụ trình duyệt từ xa
Một trình chạy thử có thể tạo các phiên trên một máy khác hoặc nền tảng lưu trữ thông qua cùng một ranh giới giao thức được sử dụng cho tự động hóa cục bộ.
Tổ chức đa ngôn ngữ
Các đội có thể sử dụng các liên kết ngôn ngữ phù hợp với ứng dụng và hệ sinh thái thử nghiệm của họ trong khi chia sẻ các quy ước và khả năng dịch vụ trình duyệt.
Công cụ trình duyệt
Giám sát, khả năng tiếp cận, ghi lại và các sản phẩm tự động hóa có thể xây dựng trên một giao diện điều khiển từ xa tiêu chuẩn thay vì một giao thức gỡ lỗi cụ thể của nhà cung cấp.
WebDriver Cổ điển Cố ý Hướng dẫn Lệnh
WebDriver cổ điển hoạt động tốt cho các hoạt động rời rạc như điều hướng, tìm một phần tử, nhấp chuột, đọc văn bản hoặc chụp màn hình. Các tín hiệu trình duyệt liên tục ít tự nhiên hơn trong một phiên trao đổi lệnh phản ứng nghiêm ngặt. Các khách hàng lịch sử đã sử dụng polling, mở rộng của nhà cung cấp, hoặc các giao thức cụ thể của trình duyệt cho các luồng sự kiện phong phú hơn. WebDriver BiDi giải quyết khoảng cách đó với các thuê bao và sự kiện không đồng bộ trong khi vẫn giữ một con đường tiêu chuẩn giữa các trình duyệt.
Các kết quả thực hiện của Các bài kiểm tra Nền tảng Web cho WebDriver tiết lộ các kết quả thực hiện cho các bài kiểm tra WebDriver trên các trình duyệt. Sự thích ứng không phải là một nhãn nhị phân: các lệnh riêng lẻ, các trường hợp biên, các mở rộng, phiên bản và nền tảng có thể hoạt động khác nhau. Giữ môi trường trình duyệt và driver có thể nhìn thấy, kiểm tra các hoạt động mà bộ công cụ dựa vào, và tránh giả định rằng việc bắt tay phiên mới thành công chứng minh mỗi tính năng tùy chọn.
Danh sách kiểm tra Tích hợp WebDriver
Một tích hợp ổn định làm cho phiên giao thức, môi trường, lệnh và các khẳng định ứng dụng có thể quan sát từ đầu đến cuối.
- Ghi lại các khả năng yêu cầu. Giữ trình duyệt, phiên bản, nền tảng, proxy, lời nhắc, chứng chỉ, chiến lược tải trang và tùy chọn của nhà cung cấp trong cấu hình đã được phiên bản.
- Ghi lại các khả năng khớp. Lưu trữ các giá trị được trả về bởi phía từ xa để một lỗi có thể được gắn liền với môi trường trình duyệt thực sự đã chạy.
- Quản lý quyền sở hữu phiên. Tạo và xóa các phiên một cách có định hướng, định nghĩa thời gian chờ và ngăn chặn các thử nghiệm không liên quan chia sẻ một hồ sơ trình duyệt hoặc dữ liệu ứng dụng có thể thay đổi.
- Sử dụng đồng bộ hóa dựa trên điều kiện. Chờ đợi trạng thái ứng dụng cần thiết cho hoạt động tiếp theo thay vì giả định rằng việc hoàn thành điều hướng làm cho mỗi phần tử động sẵn sàng.
- Xử lý vòng đời phần tử. Xác định vị trí các phần tử gần nơi sử dụng, mong đợi các tham chiếu trở nên lỗi thời sau khi điều hướng hoặc thay thế DOM, và giữ cho các bộ chọn được kết nối với hành vi trang ngữ nghĩa.
- Bảo tồn chứng cứ giao thức. Giữ lại tên lệnh, lỗi gốc, ID phiên, môi trường trình duyệt, ảnh chụp màn hình và nhật ký liên quan mà không làm lộ bí mật.
- Kiểm thử các ranh giới từ xa. Xác thực việc chuyển giao tệp, tải xuống, cửa sổ, quyền, chính sách mạng và di sản trên dịch vụ từ xa thực tế; hành vi cục bộ không phải là bằng chứng đủ.
- Theo dõi các nhu cầu BiDi riêng biệt. Liệt kê các sự kiện hoặc mô-đun cần WebDriver BiDi và xác minh hỗ trợ hiện tại của trình duyệt và khách hàng trước khi thay thế các lệnh cổ điển hoặc tích hợp cụ thể của trình duyệt.
Các Khái Niệm WebDriver trong Kiến Trúc Trình Duyệt Được Quản Lý
Các dịch vụ trình duyệt được quản lý tuân theo sự phân tách kiến trúc giống nhau mà khiến WebDriver hữu ích: logic ứng dụng có thể chạy ở một nơi trong khi trình duyệt chạy ở nơi khác. Scrapeless Scraping Browser cung cấp hạ tầng trình duyệt từ xa đó cho các khách hàng tự động hóa được hỗ trợ và quy trình làm việc dữ liệu web động.
Xác minh giao thức thực tế và bề mặt tính năng được hỗ trợ bởi khách hàng đã chọn thay vì giả định mọi điểm cuối trình duyệt từ xa đều triển khai WebDriver cổ điển. Xem lại hiện tại Tổng quan sản phẩm Scrapeless Scraping Browser, Tài liệu bắt đầu sử dụng Scrapeless Scraping Browser, và Giá Scrapeless trước khi chọn một mô hình hoạt động.
Kết luận: WebDriver Là Lớp Tương Tác
WebDriver là một hợp đồng điều khiển từ xa tiêu chuẩn hóa giữa các khách hàng tự động hóa và trình duyệt. Phiên làm việc và khả năng thiết lập môi trường; lệnh điều khiển điều hướng, phần tử, đầu vào, lưu trữ, cửa sổ, kịch bản và ghi lại; kết quả có cấu trúc và lỗi quay trở lại cho khách hàng. Selenium làm cho mô hình này có thể truy cập trên nhiều ngôn ngữ và hạ tầng từ xa.
Giao thức không thay thế thiết kế kiểm tra. Các bộ định danh ổn định, thời gian chờ dựa trên trạng thái, dữ liệu tách biệt, các khẳng định có ý nghĩa và môi trường có thể quan sát vẫn xác định liệu một bộ công cụ tự động hóa có đáng tin cậy hay không. WebDriver BiDi bổ sung cho mô hình cổ điển khi các sự kiện trình duyệt không đồng bộ được yêu cầu.
Sẵn sàng đánh giá hạ tầng trình duyệt từ xa?
Tạo một tài khoản Scrapeless và kiểm tra một quy trình tự động hóa có giới hạn với khách hàng, cài đặt phiên, môi trường trình duyệt và bằng chứng dự án của bạn yêu cầu.
Bắt đầu miễn phí →Câu hỏi thường gặp
WebDriver có giống với Selenium không?
Không. WebDriver là một giao diện tự động hóa trình duyệt và một gia đình giao thức. Selenium là một dự án cung cấp các liên kết ngôn ngữ WebDriver, Grid, IDE và các công cụ liên quan. Các khách hàng và dịch vụ trình duyệt khác cũng có thể thực hiện hoặc sử dụng WebDriver.
Tại sao WebDriver cần trình điều khiển trình duyệt?
Việc triển khai từ xa phân bổ các lệnh tiêu chuẩn hóa cho một trình duyệt cụ thể. Các nhà cung cấp trình duyệt có thể sở hữu hoặc tham gia vào việc triển khai đó để cùng một hoạt động giao thức ánh xạ đến các cơ sở tự động hóa gốc của trình duyệt. Một số gói hiện đại ẩn giấu việc quản lý trình điều khiển, nhưng ranh giới triển khai vẫn tồn tại.
WebDriver có khả năng gì?
Các khả năng là các giá trị được yêu cầu và khớp dùng khi tạo phiên. Chúng mô tả các yêu cầu hoặc chi tiết môi trường như tên trình duyệt, phiên bản trình duyệt, nền tảng, proxy, xử lý lời nhắc, chứng chỉ và các tùy chọn riêng của nhà cung cấp.
WebDriver có hoạt động từ xa không?
Có. Phía cục bộ có thể gửi yêu cầu phiên và lệnh đến một điểm cuối WebDriver từ xa như Selenium Grid hoặc một dịch vụ trình duyệt được lưu trữ. Xác thực các khả năng chính xác, hành vi tệp, đối tượng, chính sách mạng và hỗ trợ lệnh mà môi trường đó cung cấp.
Sự khác biệt giữa WebDriver và WebDriver BiDi là gì?
WebDriver cổ điển chủ yếu sử dụng các hoạt động lệnh-phản hồi HTTP. WebDriver BiDi thêm kết nối WebSocket, lệnh không đồng bộ, đăng ký và sự kiện từ trình duyệt đến khách hàng. Hai cái này chia sẻ các khái niệm phiên, và khách hàng có thể sử dụng cả hai trong khi độ phủ tính năng BiDi mở rộng.