Xpath là gì

  -  

Nhận diện website elements (element identification) là bước luôn luôn phải có khi automate website testing. XPath (được W3C khuyên nhủ dùng) chính là giải pháp tối ưu cho sự việc này. Đa số các web automation tools đều cung cấp XPath, kể cả Selenium WebDriver. Dù vậy, thực hiện XPath công dụng thành thục không dễ, yên cầu nhiều thời gian tò mò và “khổ luyện”.

Bạn đang xem: Xpath là gì

Bài viết để giúp đỡ bạn hiểu rõ hơn về XPath và cách sử dụng tương tự như khắc phục sai lầm về chúng. Hy vọng bạn có thể tận dụng được về tối đa sức khỏe của “vũ khí túng thiếu mật” này.


1. XPath là property của website element

Hiểu XPath bằng phép so sánh này là xu hướng tự nhiên khi chúng ta mới học về XPath. Tuy nhiên dần dần các bạn sẽ thấy giải pháp hiểu tương tự như đó hơi nguy hiểm. Giả dụ các bạn copy XPath của 1 button () trên Chrome bằng cách right click lên website element và chọn Copy > Copy XPath:

*

Bạn sẽ cảm nhận chuỗi sau:

//*<
id=”Login”>

Trong khi đó, nếu bạn dùng Firebug (1 add-on của Firefox) trên cùng button, bạn sẽ nhận được công dụng hoàn toàn không giống biệt:

/html/body/div/table/tbody/tr<5>/td/input

Tại sao XPath “property” của cùng 1 website element lại không còn giống nhau chút nào, dù web element này sẽ không thay đổi?

Bởi vày XPath thực sự chưa phải là “property” của control. Theo định nghĩa, XPath chỉ là ngôn từ để mô tả cách tìm kiếm 1 website element cơ mà thôi. Vì chưng vậy, rất nhiều tools khác nhau trả về XPath của một web element hoàn toàn khác nhau là chuyện “bình hay như bức tường”.

Điều này ngầm định rằng bạn phải là người quyết định XPath nào đọc dễ dàng (readable) và ổn định (reliable) nhất nhằm locate 1 web element.

Một số thử nghiệm automation tools như TestArchitect (sản phẩm của LogiGear) cung ứng sẵn công dụng construct XPath “đẹp”. Screenshot dưới minh họa XPath mà lại TestArchitect gợi ý cho chính mình (cùng chỉ mang lại button vào 2 ví dụ như phía trên).

*

Đường dẫn này (//input<
id=’Login’>) “đẹp” hơn vày vì:

Chi ngày tiết hơn nhắc nhở từ Chrome (//*<
id=”Login”>)
. Đường dẫn của Chrome sẽ gật đầu tất cả elements có ID = “Login” dù element đó thuộc loại gì. Giả sử trang web có 1 element thuộc ID = “Login”, băng thông Chrome hoàn toàn có thể trả về kết quả sai.Ít “dễ vỡ” hơn gợi nhắc từ Firebug (/html/body/div/table/tbody/tr<5>/td/input). Giả sử tag này được developer trở qua lắp thêm 8, đường dẫn Firebug vẫn trả về trống rỗng (null).

Xem thêm: Trung Thực Là Gì ? Cách Nhận Diện Người Sống Trung Thực Cách Nhận Diện Người Sống Trung Thực

Dù XPath nào tất cả “đẹp” cho đâu đi nữa, các bạn vẫn đề xuất là người ra quyết định cuối cùng.

2. XPath không đúng định

Ấn tượng này cũng dễ hiểu vì nhiều lúc test run của bạn fail bên trên Firefox vì lúc đầu bạn capture bên trên Chrome và ngược lại. Cẩn trọng điều tra một chút các bạn sẽ thấy bao gồm sự không giống biệt.

Trên Chrome:

//input<
id=’stdinput-00001′>

Trên Firefox:

//input<
id=’stdinput-0000A’>

Đây rất có thể là hiệu quả của việc developer generate elements động, một nghệ thuật khá phổ biến khi trở nên tân tiến web apps. Hoàn toàn có thể trong thời điểm code, chàng trai developer nào kia đã nối sát việc tạo nên web elements vào loại browser. Đây là câu hỏi làm đi ngược với tiêu chí tăng testability. Dù vậy, thỉnh thoảng lỗi lầm vẫn xảy ra.

Nếu bạn không lưu ý kỹ, chúng ta cũng có thể đổ lỗi mang lại XPath. Nhưng thực tế kẻ tội đồ chưa hẳn XPath mà là cách generate ID đến controls đặc dị trên. Trong lúc mong chờ developer fix sự bất đồng nhất này nhằm tăng testability, bạn có thể tiếp tục các bước testing bởi 1 thủ pháp nho nhỏ tuổi như sau:

//inputid, ‘stdinput-00001‘) or contains(
id, ‘stdinput-0000A‘)>

Chúc mừng! Tests của bạn đã sở hữu thể chạy thành công trên cả 2 browsers.

Xem thêm: Thành Phố Xe Hơi Trò Chơi Học Tập Cho Trẻ Mẫu Giáo, Game Học Tập

3. XPath là “silver bullet”

Trong giờ Anh, nhiều từ “silver bullet” diễn tả 1 chiến thuật one form size fits all (một câu trả lời cho mọi vấn đề). Phụ thuộc vào vào XPath quá mức cần thiết mà không cẩn trọng phân tích và thấu hiểu web apps nhiều người đang test sẽ làm cho bạn hết sức ngỡ ngàng khi nhấn được công dụng failed bất ngờ. Cần hiểu rằng cùng 1 XPath có thể trả về nhiều elements khác nhau tùy vào tình huống. Ví dụ:

//a<.=’Mac’>

Khi chúng ta dùng XPath trên, bạn muốn lấy element này:

*

Nhưng bất thần thay, trong thực tiễn bạn cảm nhận element này:

*

Do vậy, để chắc chắn luôn lấy đúng element, bạn nên đầu tư thời gian phẫu thuật và hiểu rõ về cấu trúc trang website mình đang test. Trong lấy ví dụ trên, bạn có thể dễ dàng riêng biệt 2 website elements bằng ancestor của chúng .

XPath của tìm kiếm result (case #1):

//div<
id=’content’>//a<.=’Mac’>

XPath của breadcrumb button (case #2):

//div/ul/li/a<.=’Mac’>

Công chũm giúp mang Xpath nhanh:ChroPath, SelectorsHubHy vọng bài viết có thể giúp cho bạn hiểu rộng về XPath, dìm diện element lúc viết kiểm tra case dễ dãi và demo suite của bạn sẽ chạy bình ổn hơn. Chúc các bạn thành công!Tham khảo:https://vntesters.com/3-hieu-lam-ve-xpath-trong-web-automation/


Chia sẻ bài viết


Facebook Linkedin Telegram Pinterest Zalo

Cộng đồng Automation Testing Việt Nam:


*

Anh Tester


Đường dẫu khó chân vẫn nên bước điĐời dẫu khổ trung khu vẫn đề xuất nghĩ thấu


Search Blogs


Related Blogs


*

demo Automation IDE - JetBrains Aqua Nov-05-2022 by Anh Tester
*

chạy thử Automation Framework cùng những Ngôn ngữ lập trình sẵn thông dụng Nov-04-2022 by Anh Tester
*

Plugin suggest code Tabnine Nov-01-2022 by Anh Tester
*

Những tính năng vượt trội trong Selenium 4 Aug-27-2022 by Anh Tester
các loại chạy thử Automation Framework phổ biến hiện nay Jul-08-2022 by Anh Tester
Element not Interactable and No such element (Unable to locate element) Jun-10-2022 by Anh Tester
Cucumber là gì? những thành phần của Cucumber May-13-2022 by Anh Tester
sự việc tiên quyết để tham dự án automation test thành công là gì ?? Mar-31-2022 by Anh Tester
15 cách thức kiểm tra auto hóa hàng đầu năm 2022 (Cập nhật new nhất) Mar-11-2022 by Anh Tester
biến hóa kỹ sư kiểm tra auto hóa SDET năm 2022 Feb-18-2022 by Anh Tester
view all

Blog Tags


Anh Tester


Đường dẫu cạnh tranh chân vẫn yêu cầu bước điĐời dẫu khổ tâm vẫn đề xuất nghĩ thấu

Connect me on


Liên hệ