top of page

มารู้จักการเขียน Xpath กันเถอะ

ในงาน automate test มีการเขียน locator ได้หลายรูปแบบ แต่ที่แนะนำมากๆก็คือ การเขียนแบบ xpath โดยการค้นหา locator แบบ xpath นั้นจะหาตามโครงสร้างของ XML document นอกจากนั้นยังสามารถเขียน Operators เข้าไปใน xpath ได้อีกด้วย

ตัวอย่างโครงสร้างของ XML document ที่ควรรู้ในการเขียน xpath

xpath แบ่งออกเป็น 2 แบบ

1. Absolute XPath คือการเขียนแบบค้นหาตาม tag name ตรงๆ

เช่น html/body/div/div[2]/div/div/div/div/div[2]/form/table/tbody/tr[2]/td[1]/input[1]

2. Relative XPath

เมื่อเราเขียนแบบ Ralative xpath มันสามารถเริ่มต้นค้นหา element ได้จากระบุ tag name , attribute name หรือ value ได้เลย โดยไม่ต้องเริ่มจาก tag แรกของ XML document เหมือนกับ Absolute XPath ซึ่งจะทำให้มีความแม่นยำมากกว่าและเข้าใจได้ง่ายกว่าอีกด้วย

Syntax for XPath : //tagname[@attribute='value']

// คือ เริ่มต้นค้นหาจาก tag name

@ คือ attribute name

/ คือ ค้นหา child tag จาก current tag

* คือ ค้นหาจากทุก tag หรือ attribute

.. คือ ค้นหา parents tag of current tag

1. Basic Xpath

ตัวอย่าง 1. //input[@name="email"]

// คือ เริ่มต้นค้นหา tag name ที่มีชื่อว่า input

@ คือ ค้นหา attribute name ชื่อ name และมี value = email

ตัวอย่าง 2. //*[@id="search-input"]/input[@id="search"]

* คือ ค้นหาทุก tag

/ คือ ค้นหา child tag ที่มีชื่อว่า input

or //*[@*="search-input"]/input[@id="search"]

* คือ ค้นหาทุก tag และ attribute ที่มี value = search-input

ตัวอย่าง 3. //input[@id="search"]/../../paper-tooltip

.. คือ ค้นหา parents tag ขึ้นไป 2 ชั้น

/ คือ ค้นหา child tag name = paper-tooltip

2. Xpath แบบ Contains() function : เราสามารถเขียนให้ xpath ค้นหาด้วย partial value

Syntax : //tagename[contains(@attribute,'partial value')]

ตัวอย่าง 1. //*[contains(@value,"ค้นแล้วเจอ")]

3. Xpath แบบ Start-with function : ตามชื่อเลยค่ะ ค้นหา xpath ที่มี value เริ่มต้นด้วยค่าที่เราใส่เข้าไป

Syntax : //tagename[starts-with(@attribute,'start-with value')]

ตัวอย่าง 1. //*[starts-with(@id,'search-')]

สามารถนำไปใช้ เมื่อเราต้องการ match หลาย element

4. Xpath by Text () : เป็นการค้นหา Element โดยค้นหาจาก Text

Syntax : //tagename[text()='Text Value']

ตัวอย่าง 1. //*[text()="อีเมลหรือโทรศัพท์"]

5. Select Last Xpath : Last() function จะค้นหา Element สุดท้ายที่ Match ได้จาก Xpath ที่เราระบุ

Syntax : //tagename[starts-with(@attribute,'value')][last()]

ตัวอย่าง 1. //div[starts-with(@id,'search-')][last()]

มันจะ Match กับ Xpath ตัวสุดท้ายที่ซ้ำกัน

ตัวอย่าง 2. //div[starts-with(@id,'search-')][last()-1]

มันจะ Match กับ Xpath ก่อน ตัวสุดท้ายที่ซ้ำกัน

6. Use And , Or in Xpath

Syntax : //tagename[@attribute1='value1' or @attribute2='value2']

ตัวอย่าง 1. //*[@id="search" or type="text1"]

Syntax : //tagename[@attribute1='value1' and @attribute2='value2']

ตัวอย่าง 2. //*[@name="search_query" and @placeholder="ค้นหา"]

ตัวอย่าง 3. การใช้ and , or ร่วมกัน

xpath=//*[@resource-id="segment_button" and (@text="ทดสอบ" or @text="Test")]

Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page