Hiệu suất của bộ chọn xpath so với css

Trong mẹo trước, chúng tôi đã xem xét hiệu suất của CSS so với. XPath chống lại Sauce Labs. Mặc dù nó chứng minh rằng mỗi chiến lược định vị tương đương nhau một cách hợp lý trên các trình duyệt, nhưng nó không vẽ được bức tranh toàn cảnh đầy đủ cho chúng tôi

Cho rằng đó là một thử nghiệm từ đầu đến cuối nên có rất nhiều biến số đang diễn ra -- Khởi động Sauce, khởi động trình duyệt và độ trễ đến và từ ứng dụng được thử nghiệm. Điều đáng tiếc rút ra từ thử nghiệm đó có thể là một trình điều khiển có thể nhanh hơn trình điều khiển kia (e. g. IE vs Firefox), trong khi thực tế thì hoàn toàn không phải vậy

Một giải pháp

Để có được cảm nhận thực sự về sự khác biệt về hiệu suất giữa CSS và XPath, chúng ta sẽ cần tìm hiểu sâu hơn. Chúng tôi sẽ làm điều đó bằng cách chạy mọi thứ từ máy cục bộ trong khi sử dụng tiện ích đo điểm chuẩn hiệu suất. Chúng tôi cũng sẽ muốn tập trung vào một hành động Selenium cụ thể hơn là toàn bộ quá trình chạy thử nghiệm và chạy mọi thứ nhiều lần

Một ví dụ

Trong ví dụ này, tôi thiết lập một máy ảo Windows XP cục bộ. Đây là công việc nhanh chóng nhờ những hình ảnh có sẵn của Microsoft. Bạn có thể lấy một cái ở đây và xem bài viết về quá trình thiết lập của bạn trong Virtual Box

Sau khi cài đặt Ruby (1. 9. 3) Tôi đã cài đặt tất cả các trình duyệt có sẵn và trình điều khiển trình duyệt tương đương của chúng để sử dụng Selenium. Bạn có thể tìm hiểu thêm về cách thiết lập các trình duyệt khác nhau để chạy cục bộ trong Selenium tại đây

Để đo điểm chuẩn, tôi đã sử dụng thư viện có sẵn trong lib tiêu chuẩn của Ruby có tên là 'điểm chuẩn'. Bạn có thể tìm hiểu thêm về nó ở đây

Để có được bộ dữ liệu mẫu đầy đủ, tôi đã chạy thử nghiệm tương tự đối với từng trình duyệt 100 lần. Và để loại bỏ những điểm bất thường trong dữ liệu, tôi đã sử dụng tính năng diễn tập của điểm chuẩn để nó chạy toàn bộ trình tự thử nghiệm, thực hiện thu gom rác rồi chạy lại

Để làm cho mọi thứ có thể so sánh được, một số bộ định vị đã được cập nhật để tạo ra các kết quả phù hợp hơn khi so sánh với nhau. Và hành động cụ thể mà chúng tôi đo lường được là find_element. Bạn có thể xem các bộ định vị và mã kiểm tra được sử dụng tại đây

Đây là kết quả

Kết quả

GHI CHÚ. Đầu ra tính bằng giây và kết quả là tổng thời gian chạy của 100 lần thực hiện

Hiệu suất của bộ chọn xpath so với css

Kết quả cho chúng ta biết điều gì

Nhìn chung, Internet Explorer chậm hơn các trình điều khiển khác, nhưng giữa CSS và XPath, có vẻ như XPath thực sự nhanh hơn CSS. Chrome và Opera có một số điểm khác biệt, dù nhỏ hơn nhiều nhưng chúng lắc lư theo cả hai hướng. Trong một số trường hợp, CSS nhanh hơn và trong những trường hợp khác, XPath. Và Firefox có vẻ được tối ưu hóa hơn một chút cho CSS vì nó hầu như nhanh hơn trên bảng

GHI CHÚ. Opera 12. 16 đã được sử dụng vì đó là phiên bản được hỗ trợ cuối cùng trong dự án Selenium. Đó là vì họ đã chuyển sang sử dụng Chromium và bỏ hỗ trợ Selenium. Điều đó và Mozilla đã thuê nhà phát triển WebDriver duy nhất của Opera -- vì vậy, có điều đó

kết thúc

Ngay cả với những khác biệt về tốc độ này, chúng chỉ cách nhau vài giây (hoặc vài giây) -- và đó là cho 100 lần thực hiện. Khi bạn nghĩ về việc phải mất 30 giây trở lên để hoàn thành một lần chạy thử, thì sự khác biệt này là không đáng kể

Như tôi đã lưu ý trong mẹo trước, lựa chọn giữa CSS và XPath có thể là một lựa chọn khó thực hiện. Nhưng bây giờ bạn được trang bị quá nhiều dữ liệu để đưa ra lựa chọn cho chính mình. Đó thực sự chỉ là vấn đề tìm kiếm những gì phù hợp với bạn và nhóm của bạn và không bị đè nặng bởi sự cường điệu và ý kiến ​​​​xung quanh cái nào tốt hơn

Kiểm tra vui vẻ

Sự nhìn nhận

Tôi muốn gửi lời cảm ơn đến David Burns và Brian Goad. Họ đã giúp thực hiện mẹo này bằng cách mỗi người giúp đỡ theo cách riêng của họ. David vì phản hồi và hướng dẫn của anh ấy về cách thực hiện kiểm thử hiệu suất hiệu quả. Và Brian vì phản hồi, đề xuất và đóng góp mã của anh ấy. Cảm ơn bạn

Cả xpath và css đều là một trong những công cụ định vị được sử dụng thường xuyên nhất trong Selenium. Mặc dù có các công cụ định vị khác như id, tên, tên lớp, tên thẻ và văn bản liên kết, v.v., xpath và css được sử dụng khi không có sẵn các thuộc tính duy nhất để xác định các phần tử

Có một số khác biệt giữa xpath và css được liệt kê dưới đây -

  • Xpath cho phép luồng hai chiều, điều đó có nghĩa là quá trình truyền tải có thể theo cả hai cách từ cha mẹ đến con cái và con cái đến cha mẹ. Css chỉ cho phép một luồng định hướng có nghĩa là quá trình truyền tải chỉ từ cha mẹ sang con

  • Xpath chậm hơn về hiệu suất và tốc độ. Css có hiệu suất và tốc độ tốt hơn xpath

  • Xpath cho phép nhận dạng với sự trợ giúp của văn bản hiển thị xuất hiện trên màn hình với sự trợ giúp của hàm text(). Css không có tính năng này

  • CSS tùy chỉnh có thể được tạo trực tiếp với sự trợ giúp của thuộc tính id và lớp. Đối với id, biểu thức css được biểu thị bằng # theo sau là id [ #<>. Đối với lớp, biểu thức css được biểu thị bằng. tiếp theo là lớp [. <>]. Xpath không có bất kỳ tính năng nào như thế này

  • Biểu thức Xpath được biểu thị bằng [//tagname[@attribute = 'value']. Biểu thức css là sự đàn áp được biểu thị bằng [tagname[attribute = 'value']

    Bộ chọn XPath hoặc CSS nào nhanh hơn?

    Ưu điểm và nhược điểm của Bộ chọn CSS . Dễ học hơn XPath, dễ sử dụng hơn. Bộ chọn CSS chỉ cho phép luồng một chiều. Sử dụng Bộ chọn CSS, chúng tôi chỉ có thể duyệt từ cha sang con chứ không thể đi từ con sang cha mẹ, điều này có thể thực hiện được với XPath. Performance is the same or faster compared to XPath. Easier to learn than XPath, easier to use. CSS Selector only allows unidirectional flow. Using a CSS Selector, we can only traverse from parent to child but not from the child to parent, which is possible with XPath.

    CSS nhanh hơn XPath bao nhiêu?

    Rõ ràng là thời gian cho mỗi lượt tìm kiếm khá gần nhau; . 32 mili giây 0.32 milliseconds . Đừng nhảy "bộ chọn XPath nhanh hơn" - đôi khi đúng như vậy, nhưng đôi khi đó là CSS. Hai bộ định vị lại giống nhau về mặt ngữ nghĩa - "tìm một phần tử div có thuộc tính lớp của nó là chuỗi con này". Một sự khác biệt của 0. 15 mili giây.

    Tại sao XPath nhanh hơn CSS?

    XPath cho phép luồng hai chiều, nghĩa là quá trình truyền tải có thể đi theo cả hai chiều – từ phần tử con sang phần tử gốc và phần tử gốc sang phần tử con . Ngược lại, CSS cho phép luồng một chiều, do đó, quá trình truyền tải chỉ hoạt động từ cấp độ cha sang cấp độ con.

    Bộ chọn nào nhanh hơn trong Selenium?

    ID locator trong Selenium là cách nhanh nhất và ưa thích nhất để định vị WebElements mong muốn trên trang. Bộ định vị ID Selenium là duy nhất cho từng phần tử trong DOM. Vì ID là duy nhất cho mỗi phần tử trên trang nên đây được coi là phương pháp nhanh nhất và an toàn nhất để xác định vị trí các phần tử.