- vừa được xem lúc

Xpath cho người nông dân - Phần 1

0 0 10

Người đăng: Do Minh Phong

Theo Viblo Asia

Anh Tèo là nông dân ở một trang trại rau A nọ. Dịch COVID-19 bùng phát, trang trại phải chấp hành lệnh của chính phủ, tạm dừng hoạt động. Chả có việc gì làm ngoài lướt thiên địa cả ngày, anh Tèo chán quá nên tìm lại đống sách cũ đọc.

Nào là bí kíp xem xong xóa, học tiếng Nhật cùng idol,... cùng vô vàn các cuốn kinh thư đi cùng tuổi thơ anh. Chợt anh thấy ở góc nhà có cuốn sách lạ, lật lên và đọc tiêu đề: "Automation chân kinh".

Nhờ đọc cuốn sách trên, anh đã trở thành một QA thực thụ tại công ty công nghệ A. Series automation này kể lại quá trình mà anh Tèo học automation, các kiến thức cơ bản, các lỗi thường gặp mà anh học được. Đây là bài đầu tiên trong series này.

Chém về XPath

Trước tiên, bạn cần 1 chút kiến thức về DOM. Nếu chưa biết, bạn hãy đọc qua bài này để có cái nhìn tổng quan về DOM nhé.

Để việc học dễ dàng và thực hành thú vị hơn, anh Tèo đã chuẩn bị 1 chiếc DOM html ở đây. Bạn hãy mở link dưới đây ở 1 tab mới, để có thể thực hành cùng anh Tèo nghen ^^

https://minhphong306.github.io/static/teo_xpath.html

Chiếc DOM trên sẽ hiển thị như sau:

Lưu ý là thứ tự trong bảng danh sách ca sĩ được random, nên mỗi lần F5 refresh lại trình duyệt sẽ có thể khác nhau.

Anh Tèo mở sách, đọc những dòng đầu tiên

- XPath, hay XML Path là cách để tìm kiếm phần tử trên trang, sử dụng cú pháp của xml. - XPath có hai loại: tìm kiếm tuyệt đối và tìm kiếm tương đối
Tuyệt đối: bắt đầu bằng "/" (một dấu gạch chéo)
Tương đối: bắt đầu bằng "//" (hai dấu gạch chéo) - Cú pháp cơ bản:
<loại_xpath> <tagname>[<thuộc_tính>=<giá_trị>]
  • Củ lạc giòn tan - anh Tèo nghĩ - cái gì mà tương đối với tuyệt đối, nghe phắc tạp vậy. Oh, có ví dụ này
-- Ví dụ tìm kiếm tới thẻ tiêu đề "Tèo học xpath", ta làm như sau:
**Tìm kiếm tuyệt đối:**
/html/body/div/div/div/h2
**Tìm kiếm tương đối**
//h2[@class='header']

Anh Tèo mở link thực hành phía trên, bấm F12, chọn tab elements để test thử. Anh nhập đoạn xpath tìm kiếm tuyệt đối vào ô tìm kiếm thì thấy hiển như như hình dưới:

-- Oh, thì ra tuyệt đối ở đây nghĩa là cần chỉ ra chính xác tuyệt đối đường dẫn từ nhỏ tới lớn. Trong ví dụ trên thì cần chỉ ra đi từ thẻ html rồi đến body, div, div,..., giống như khi tìm đường bằng Google Map, cần nhập chính xác tọa độ (kinh độ, vĩ độ) vậy

/html/body/div/div/div/h2

-- Hơi nông dân nhỉ. Giờ mà tìm kiếm cái nào sâu sâu tí thì khéo xpath dài hơn cả ... của mình ấy chứ. Thử cái tương đối xem có tiến bộ hơn không nào

-- Ahh, thú vị hơn này. Thay vì nhập đường dẫn tuyệt đối, ta chỉ cần chỉ ra những đặc tính riêng biệt của phần tử cần chọn. Trong ví dụ trên thì chỉ cần chỉ ra thẻ cần tìm là thẻ h2, có class là header là được. Cũng giống như việc tìm đường, chỉ cần chỉ ra phố Trần Duy Hưng, gốc cây số bao nhiêu, à nhầm số nhà bao nhiêu, là được. Không cần phải kinh độ hay vĩ độ gì cho khó nhớ cả. Hihi

//h2[@class='header']

-- Dễ nhỉ. Thử làm bài tập coi.

Bài tập:

  1. Viết xpath tìm kiếm ô checkbox của Sơn Tùng M-TP

Mở tab elements lên, anh Tèo bắt đầu phân tích

-- Cái ô checkbox cần tìm có thẻ là input, id là "cbSonTung". Như vậy chỉ cần viết 1 chiếc XPath đơn giản thế này là ngon ngay

//input[@id='cbSonTung']

  1. Giống bài 1, nhưng không được dùng thuộc tính id

-- Không dùng id à. Vậy thì mình sẽ tìm tất cả các input có type là checkbox. Sau nó tìm đến cái checkbox thứ 3 là được.

(//input[@type='checkbox'])[3]

Bạn đọc lưu ý chỗ này nha. Bình thường để tìm phần tử có input có type là checkbox, chúng ta làm như sau:

//input[@type='checkbox']

Vì kết quả có thể có nhiều hơn 1 phần tử, nên ta có thể dùng cặp ngoặc vuông, bên trong là số thứ tự của phần tử để chọn chính xác phần tử đó

[3]

Và để search được trong ô tìm kiếm của chrome, bạn cần bao cái xpath bằng 1 cặp ngoặc tròn "()"

(xpath)[vị_trí]

Như trong ví dụ của anh Tèo:

(//input[@type='checkbox'])[3]

-- Nggonnnn - anh Tèo cao hứng.

Bây giờ, bạn thử F5 lại trình duyệt, tìm kiếm lại với xpath vừa làm ở bài 2

-- Thử F5 coi có gì khác nào

Sau khi F5, anh Tèo thấy vẫn tìm được phần tử, nhưng lần này lại là checkbox của Bích Phương, không phải Sơn Tùng M-TP.

-- Thôi toang. Hiểu rồi. Thì ra các phần tử có thể thay đổi được thứ tự, nên tìm kiếm kiểu dùng vị trí là hơi dâm, sẽ bị sai. Làm thế nào nhỉ ??

Vừa nghĩ, anh Tèo vừa lật trang sách

Lúc này bạn cần dùng tới axes method để tìm kiếm các phần tử động.

Muốn biết anh Tèo tìm checkbox của Sơn Tùng M-TP kiểu gì, bạn hãy đón đọc phần 2: Tìm kiếm XPath cho checkbox Sơn Tùng M-TP nhé ^^

Nguồn

Bài viết được trích từ blog của mình: Link

Nếu trong bài viết có gì sai sót, bạn hãy cho mình biết nhé ^^

Đầu năm mới, chúc toàn thể anh chị em Viblo một năm tràn đầy năng lượng, đặt goal và giữ kỉ luật để đạt goal của mình nhé 🔥🔥

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu về SelectorsHub - thế hệ mới của XPath & Selectors tools

1/ Giới thiệu:. Locators đóng một vai trò rất quan trọng trong các automation script.

0 0 40

- vừa được xem lúc

Thực hiện automation test với hệ thống có yêu cầu xác thực email

I. Yêu cầu:.

0 0 62

- vừa được xem lúc

Tự học JMeter A - Z (P1)

Series này được viết ra để tổng hợp các kiến thức mình tự học được về JMeter. Hope you enjoy it. . Download Java JDK.

0 0 603

- vừa được xem lúc

Automation test mà không cần code

Chào các bạn, lần này mình sẽ viết 1 chủ đề mà nhiều bạn Manual test quan tâm đó chính là làm thế nào để có thể thực hiện Automation test mà không cần code, hoặc code gà như mình vẫn có thể thực hiện

0 0 38

- vừa được xem lúc

Tìm hiểu về Automation Web Testing với Selenium & Cucumber

Selenium là gì. . . Selenium chỉ tập chung vào việc tự động hóa các ứng dụng dựa trên Web.

0 0 278

- vừa được xem lúc

Sự khác nhau giữa Manual Testing và Automation Testing

1. Manual Testing là gì. 2. Automation Testing là gì.

0 0 68