CSS có nhanh hơn XPath không?

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 và xem bài viết hướng dẫn 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

CSS có nhanh hơn XPath không?

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

định vị css nhanh hơn xpath?

bộ định vị css nhanh hơn xpath vì bộ định vị css chỉ di chuyển trong cây html theo hướng đi xuống, nhưng xpath di chuyển theo cả hướng lên và xuống

Sự khác biệt giữa "/" và "//" trong XPath là gì?

Dấu gạch chéo đơn "/". Được sử dụng trong đường dẫn tuyệt đối

Dấu gạch chéo kép "//". Được sử dụng trong đường dẫn tương đối

Thứ tự ưu tiên sử dụng thiết bị định vị là gì?

Dưới đây là mức độ ưu tiên sử dụng các bộ định vị này

  1. Tôi

  2. Tên

  3. linkText / một phầnLinkText

  4. css

  5. xpath

Tại sao không nên sử dụng bộ định vị className và tagName?

Bởi vì tên lớp và tên thẻ có thể chỉ được sử dụng một lần trong một trang tại thời điểm phát triển tập lệnh tự động hóa, nhưng điều đó không an toàn, nhà phát triển có thể sử dụng cùng một thẻ và lớp bất kỳ lúc nào. Bạn sẽ tìm hiểu về tất cả các bộ định vị trong các chương tiếp theo

Khi nào chúng ta sử dụng bộ định vị LinkText và một phầnLinkText?

Công cụ định vị LinkText  nên được sử dụng khi văn bản của liên kết không đổi. bộ định vị partLinkText nên được sử dụng khi một phần nhất định của văn bản liên kết bị thay đổi mỗi khi trang được tải. tôi. e. đối với văn bản thay đổi động một phần, chúng tôi sử dụng bộ định vị một phầnLinkText

Khi nào chúng ta sử dụng bộ định vị id?

Khi mã nguồn html có thuộc tính id, thì chúng ta có thể sử dụng bộ định vị id. Và những gì chúng ta chuyển làm đối số cho bộ định vị iid là giá trị của thuộc tính id

Khi nào chúng ta sử dụng bộ định vị tên?

Khi mã nguồn html có thuộc tính tên, thì chúng ta có thể sử dụng bộ định vị tên. Và những gì chúng ta chuyển làm đối số cho bộ định vị tên là giá trị của thuộc tính tên

Làm thế nào để bạn đảm bảo trang yêu cầu được hiển thị hay không?

Chúng tôi có thể sử dụng các điểm kiểm tra sau để xác thực trang được yêu cầu có được hiển thị hay không

  1. sử dụng tiêu đề của trang

  2. sử dụng URL của trang

  3. sử dụng bất kỳ phần tử độc đáo nào trên trang

Chúng tôi có cả thuộc tính id và tên, chúng tôi thích bộ định vị nào hơn?

Chúng tôi thích id hơn công cụ định vị tên, vì id là duy nhất và tên có thể trùng lặp

Làm cách nào để chúng tôi xử lý các đối tượng thay đổi động trên trang web?

Bằng cách sử dụng xpath với hàm chứa khi giá trị thuộc tính hoặc văn bản thay đổi một phần. Nếu văn bản hoàn toàn thay đổi, chúng tôi xử lý tình huống này bằng cách sử dụng khái niệm xpath độc lập phụ thuộc

Tại sao XPath tốt 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ừ con đến cha mẹ và từ cha mẹ sang 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

Tại sao đường dẫn CSS nhanh hơn XPath?

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

Tại sao CSS là công cụ định vị nhanh nhất?

trình định vị css nhanh hơn xpath vì trình định vị css chỉ di chuyển trong cây html theo hướng đi xuống , nhưng xpath di chuyển theo cả hướng lên và hướng lên .

Máy định vị nào nhanh nhất?

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ử.