WebDriver là gì?
Scrapeless Agent Browser cung cấp các trình duyệt đám mây được quản lý cho các client tự động hóa thông qua các giao diện kết nối đã được tài liệu hóa của nó.
WebDriver là một giao diện điều khiển từ xa chuẩn hóa cho các trình duyệt web. Một chương trình bên ngoài trình duyệt sử dụng các lệnh WebDriver để điều hướng, tìm phần tử, thực hiện tương tác và kiểm tra trạng thái trình duyệt. Giao diện này trung lập về ngôn ngữ, cho phép các thư viện client trong những ngôn ngữ lập trình khác nhau biểu đạt các thao tác trên trình duyệt thông qua một mô hình giao thức chung.
WebDriver thường được biết đến thông qua Selenium, nhưng các thuật ngữ này chỉ các tầng khác nhau. WebDriver định nghĩa hợp đồng điều khiển trình duyệt; Selenium cung cấp thư viện và hạ tầng sử dụng các giao diện tự động hóa trình duyệt. Một driver dành riêng cho trình duyệt triển khai phía remote cho một môi trường trình duyệt cụ thể.
Cách một lệnh WebDriver đến được trình duyệt
Một client WebDriver gửi một lệnh đến một remote end điều khiển trình duyệt. Giao thức WebDriver định nghĩa mối quan hệ này và hành vi của các lệnh và phản hồi.
Thư viện client cung cấp cho bạn các phương thức ở cấp ngôn ngữ lập trình. Remote end diễn giải yêu cầu giao thức và thực hiện thao tác trình duyệt tương ứng. Sau đó trình duyệt điều hướng, đọc trạng thái hoặc tương tác với tài liệu, và remote end trả về kết quả hoặc lỗi.
Một remote end có thể được truy cập cục bộ hoặc thông qua một dịch vụ mạng. “Remote” mô tả ranh giới điều khiển; nó không yêu cầu trình duyệt phải ở trên public cloud. Một tiến trình driver trên cùng máy tính vẫn nằm bên ngoài trình duyệt đang bị điều khiển.
Sự tách biệt này khiến quyền sở hữu thành phần trở nên quan trọng. Một assertion thuộc về framework kiểm thử, một selector thuộc về logic ứng dụng, một lỗi giao thức thuộc về quá trình trao đổi lệnh, và việc render trang thuộc về trình duyệt. Hãy bắt đầu chẩn đoán tại tầng đã tạo ra lỗi quan sát được.
Một phiên thiết lập mối quan hệ tự động hóa
Một phiên WebDriver thiết lập mối quan hệ giữa một client và một môi trường trình duyệt. Các lệnh tiếp theo hoạt động trong phiên đó cho đến khi nó kết thúc.
Việc tạo phiên bao gồm thương lượng capability. Client nêu ra môi trường trình duyệt và các tùy chọn được hỗ trợ mà nó cần, trong khi remote end xác định liệu nó có thể tạo một phiên phù hợp hay không. Các capability được trả về mô tả phiên thực tế đã được thiết lập.
Một định danh phiên là một tham chiếu được giao thức tự động hóa sử dụng. Nó không giống với cookie đăng nhập của website. Một trình duyệt có thể có một phiên WebDriver hợp lệ trong khi đang hiển thị một trang chưa xác thực, và website có thể hết hạn xác thực trong khi quá trình tự động hóa vẫn còn kết nối.
Hãy kết thúc phiên một cách rõ ràng khi công việc hoàn thành. Đóng một cửa sổ và kết thúc phiên tự động hóa là hai hành động khác nhau. Một chính sách dọn dẹp nên tính đến các cửa sổ, tiến trình trình duyệt và mọi tài nguyên từ xa gắn với công việc.
Driver và thư viện client là những thành phần khác nhau
Một thư viện client biểu đạt các lệnh trình duyệt trong ngôn ngữ lập trình của bạn, trong khi một driver cung cấp phần triển khai remote cho trình duyệt. Các thành phần tương thích phải thống nhất về hành vi giao thức cần thiết cho quy trình làm việc.
Triển khai ChromeDriver cung cấp hỗ trợ tự động hóa trình duyệt cho Chrome. Các trình duyệt khác có triển khai và chi tiết hỗ trợ riêng. Đừng cho rằng một driver cho một trình duyệt có thể điều khiển mọi sản phẩm trình duyệt.
Một thư viện có thể giúp lấy hoặc chọn driver, nhưng sự tiện lợi đó không loại bỏ yêu cầu tương thích phiên bản trong triển khai. Hãy ghi lại môi trường trình duyệt và driver thực tế khi tái hiện một lỗi.
| Tầng | Trách nhiệm | Câu hỏi điển hình |
|---|---|---|
| Ứng dụng hoặc kiểm thử | Định nghĩa quy trình làm việc và các assertion cần thiết | Người dùng nên thấy gì? |
| Thư viện client | Biểu đạt và gửi các lệnh tự động hóa | Ngôn ngữ này phơi bày thao tác như thế nào? |
| Driver hoặc remote end | Triển khai các lệnh điều khiển trình duyệt | Môi trường này có thể thực hiện thao tác không? |
| Trình duyệt | Tải và thực thi nội dung web | Tài liệu và trạng thái nào thực sự được render? |
Tham chiếu phần tử thuộc về vòng đời tài liệu
Một tham chiếu phần tử WebDriver xác định một phần tử được tìm thấy trong một ngữ cảnh trình duyệt và trạng thái tài liệu cụ thể. Tham chiếu này không phải là bộ định vị vĩnh viễn cho bất cứ thứ gì chiếm cùng vị trí hiển thị về sau.
Một thao tác điều hướng sẽ thay thế tài liệu. Một ứng dụng phía client cũng có thể thay thế một phần tử mà không đổi URL trang. Khi một phần tử đã được tham chiếu trước đó bị tách ra, tiếp tục sử dụng tham chiếu đó có thể tạo ra lỗi stale-element.
Hãy thiết kế tương tác xoay quanh ý nghĩa ổn định. Định vị điều khiển gắn với hành động dự định, xác minh trạng thái trang liên quan và lấy lại phần tử sau khi tài liệu hoặc thành phần được thay thế theo cách đã biết. Đừng coi một handle phần tử đã lưu trữ như một định danh nghiệp vụ bền vững.
Việc chọn frame cũng quan trọng. Một node bên trong iframe thuộc về tài liệu con, do đó ngữ cảnh duyệt hiện tại quyết định nơi thực hiện tìm kiếm phần tử. Một selector đúng trong frame sai vẫn nhắm đến tài liệu sai.
Các lệnh chờ nên mô tả mức sẵn sàng của ứng dụng
Một lệnh chờ hữu ích mô tả trạng thái ứng dụng cần có cho hành động tiếp theo. Việc điều hướng trình duyệt hoàn tất và việc hoàn tất trạng thái nghiệp vụ thường là những sự kiện khác nhau.
Ví dụ, một vùng chứa kết quả có thể tồn tại trước khi các bản ghi của nó đến. Một nút có thể hiển thị trong khi một lớp phủ đang tải chặn tương tác. Tiêu đề trang có thể đúng trong khi một lời nhắc ủy quyền chiếm vùng nội dung chính.
Chọn các điều kiện khớp với hành động. Trước khi trích xuất một bản ghi, hãy xác nhận rằng danh tính bản ghi và các trường bắt buộc đều có mặt. Trước khi chọn một điều khiển, hãy xác nhận rằng nó sẵn sàng trong ngữ cảnh và trạng thái mong đợi. Tránh các khoảng trễ tùy ý như bằng chứng duy nhất cho thấy ứng dụng đã sẵn sàng.
Giữ cho việc chẩn đoán hết thời gian chờ cụ thể. Khi một điều kiện không được đáp ứng, hãy kiểm tra URL cuối cùng, trang hiển thị, khung và trạng thái mong đợi. Kéo dài thời gian chờ sẽ không sửa được bộ chọn sai hoặc bù đắp cho việc thiếu ủy quyền.
Các cơ chế chờ khác nhau có ngữ nghĩa khác nhau, và việc kết hợp chúng một cách tùy tiện có thể khiến quá trình thực thi khó suy luận. Hãy sử dụng hành vi đã được tài liệu hóa của thư viện khách và một chiến lược chờ ở cấp ứng dụng nhất quán.
Mối liên hệ giữa WebDriver và Selenium
Selenium là một hệ sinh thái tự động hóa bao gồm hỗ trợ thư viện khách WebDriver và các hạ tầng bổ sung. Phần kiến trúc Selenium WebDriver giải thích cách các thư viện của nó điều khiển trình duyệt thông qua các cơ chế tự động hóa được hỗ trợ của chúng.
Sự phân biệt này quan trọng khi chỉ định một yêu cầu. “Hỗ trợ Selenium” có thể chỉ một thư viện khách, một máy chủ từ xa, hoặc một tuyến trình duyệt cụ thể. Một yêu cầu hữu ích nêu rõ ngôn ngữ lập trình, trình duyệt, loại kết nối và các thao tác mà công việc cần.
Selenium Grid giải quyết việc phân phối các phiên trình duyệt trên các môi trường thực thi sẵn có. Bản thân việc phân phối không xác thực dữ liệu trang đã trích xuất hoặc quyết định bộ định vị có đúng hay không. Hãy giữ những kiểm tra đó trong job sở hữu logic ứng dụng.
Các khung kiểm thử bổ sung các khẳng định, báo cáo và tổ chức bộ test xung quanh các tương tác với trình duyệt. WebDriver có thể thực hiện một hành động thành công trong khi một khẳng định thất bại vì ứng dụng tạo ra kết quả sai. Đó là một sự phân biệt hữu ích chứ không phải mâu thuẫn.
WebDriver BiDi và CDP cần được kiểm tra khả năng tương thích riêng
WebDriver BiDi và CDP là các bề mặt giao thức bổ sung với khả năng và phạm vi hỗ trợ riêng. Không nên suy diễn chúng từ việc tồn tại một kết nối trình duyệt từ xa chung chung.
BiDi bổ sung mô hình hai chiều cho lệnh và các sự kiện do trình duyệt tạo ra. CDP cung cấp điều khiển trình duyệt theo hướng DevTools. Một hệ sinh thái khách có thể dùng nhiều hơn một giao diện, nhưng ứng dụng của bạn vẫn cần thao tác chính xác được hỗ trợ bởi trình duyệt và đầu cuối từ xa đã chọn.
Khi một ứng dụng phụ thuộc vào quan sát mạng hoặc sự kiện console, hãy liệt kê rõ các yêu cầu đó. Kiểm tra tính năng giao thức, API khách, phiên bản trình duyệt và tuyến nhà cung cấp từ xa như một tổ hợp.
Đừng chuyển tuyên bố tương thích khung rộng rãi của một sản phẩm thành tuyên bố hỗ trợ đã được kiểm thử cho mọi giao thức. Một ví dụ kết nối được ghi lại là bằng chứng cho tuyến kết nối đó, không phải cho các giao diện không liên quan.
Dịch vụ lưu trữ trình duyệt được quản lý là một quyết định riêng
Dịch vụ lưu trữ trình duyệt được quản lý xác định ai vận hành môi trường trình duyệt; WebDriver xác định một giao diện điều khiển trình duyệt. Quyết định lưu trữ và quyết định giao thức nên được đánh giá cùng nhau mà không xem chúng là một.
Trình duyệt Scrapeless Agent cung cấp thực thi trình duyệt được quản lý, và phần tổng quan về trình duyệt giải thích vai trò hạ tầng đó. Hãy sử dụng các giao diện kết nối hiện đang được ghi lại cho luồng công việc bạn chọn, và thiết lập khả năng tương thích giao thức trước khi lập kế hoạch triển khai.
Phần thảo luận về scraping với Selenium cung cấp ngữ cảnh liên quan cho việc thu thập dữ liệu điều khiển bằng trình duyệt. Hãy xem bảng giá Scrapeless chỉ sau khi xác định khối lượng công việc của trình duyệt và yêu cầu kết nối. Dịch vụ lưu trữ không thể sửa một quy tắc trích xuất đang đọc sai bản ghi.
Kết luận
WebDriver cung cấp cho các chương trình bên ngoài một cách tiêu chuẩn hóa để điều khiển trình duyệt. Việc sử dụng đáng tin cậy phụ thuộc vào vòng đời phiên rõ ràng, các thành phần tương thích, xử lý phần tử có hiểu biết về tài liệu và các lệnh chờ gắn với trạng thái ứng dụng. Hãy nêu rõ giao thức và môi trường thực tế trong yêu cầu để lựa chọn dịch vụ lưu trữ trình duyệt và thư viện khách vẫn có thể kiểm thử.
Xác định yêu cầu thực thi trình duyệt của bạn
Đánh giá Trình duyệt Scrapeless Agent dựa trên các giao diện kết nối và vòng đời mà ứng dụng của bạn thực sự cần.
Đăng ký hôm nay và nhận $5 in free credit — không cần thẻ tín dụng.
Nhận $5 Credit của bạn →Câu hỏi thường gặp
H: WebDriver có phải là một ngôn ngữ lập trình không?
WebDriver là một giao diện và giao thức điều khiển trình duyệt, không phải ngôn ngữ lập trình. Các thư viện khách cung cấp các thao tác của nó thông qua những ngôn ngữ được ứng dụng tự động hóa sử dụng.
H: Selenium có giống WebDriver không?
Selenium và WebDriver chỉ các lớp khác nhau. Selenium cung cấp một hệ sinh thái tự động hóa, trong khi WebDriver định nghĩa một hợp đồng điều khiển trình duyệt được các thư viện khách của nó sử dụng.
H: Tại sao một phần tử đã tìm thấy trước đó lại trở nên stale?
Một phần tử trở nên stale khi nút tài liệu mà nó tham chiếu không còn hợp lệ với trạng thái trang hiện tại. Điều hướng hoặc thay thế thành phần có thể tách nút đó ngay cả khi một điều khiển tương tự vẫn hiển thị.
H: Một phiên WebDriver có nghĩa là đăng nhập website đang hoạt động phải không?
Một phiên WebDriver không thiết lập đăng nhập website. Trạng thái kết nối tự động hóa và xác thực ứng dụng là những vòng đời riêng biệt.
H: WebDriver có thể điều khiển trình duyệt trên cùng máy tính không?
WebDriver có thể điều khiển trình duyệt trên cùng máy tính thông qua một đầu cuối từ xa cục bộ. Ranh giới giao thức tách biệt với vị trí vật lý của trình duyệt.