Các cách lấy locator của web element
1. Id – Lấy ra phần tử có thuộc tính @Id
VD: Lấy ra phần tử có id = FirstName:
WebElement firstName= driver.findElement(By.id(“FirstName”));
2. Name – Lấy ra phần tử đầu tiên tìm được có thuộc tính @Name
Gần giống như thuộc tính id, mỗi trường dữ liệu sẽ được gắn một tên duy nhất và thường thì tên này không bị thay đổi sau các lần nâng cấp hay sửa đổi. Đây là một trong những lựa chọn tốt nhất khi lấy locator cho các phần tử trong form login hoặc form mà có nhiều trường input tương tự nhau như khai báo hàng hóa hay là form register nào đó
VD: Lấy ra phần tử có name = FirstName
WebElement firstName= driver.findElement(By.name(“FirstName”));
3. Link text – Lấy ra phần tử hiển thị dòng text và có link tương ứng
Sử dụng link text là cách tuyệt vời để bạn tìm ra các liên kết trong trang web của bạn – nó thường được hiển thị dưới dạng chữ bình thường như thế này.
Rất thích hợp cho việc test điều hướng trang.
VD:
VD: Lấy ra phần tử có linktext: Tìm hiểu thêm
WebElement linkText= driver.findElement(By.linkText(“Tìm hiểu thêm”));
4. Partial Link Text – Lấy ra phần tử hiển thị dòng text và có partial link tương ứng
Cách này thì tương tự như lấy link text, chỉ khác mỗi cái ở chỗ cách sử dụng và dùng hàm để tìm ra element tương tứng với nó thôi.
Cùng xem ví dụ dưới đây để hiểu hơn nhé:
<a href=“http://www.google.com.vn”>Click here to download</a>
WebElement linkText = driver.findElement(By.PartialLinkText(“here“));
5. Tag name – Lấy ra phần từ có HTML tag tương ứng cần lấy
Sử dụng thuộc tính tag name để lấy ra tất cả các element có tag name mà bạn muốn lấy. Để hiểu về tag name, thì các bạn xem ví dụ dưới này nhé!
Ở phía dưới là câu lệnh lấy ra tất cả các phần tử có tag name là input. Tương tự bạn có thể thay thế tag input này bằng một tag name khác, để lấy ra được các phần tử có tag name mà bạn cần lấy ra.
List<WebElement> elements = driver.findElements(By.tagName(“input”));
String[] linkTexts = new String[elements .size()];
6. CSS Class name –Truy cập vào phần tử web theo class name
CSS class locator sử dụng một thuộc tính class đặc biệt để lấy ra phần tử đầu tiên xuất hiện trong trang web, cách này hiệu quả trong việc lấy ra những item có một style duy nhất nào đó.
Dưới đây là ví dụ lấy ra phần tử có thuộc tính class name là button:
7. CSS selector – Truy cập vào các phần tử web
CSS selector không khác so với XPath, nhưng cách này được đánh giá là linh hoạt và mạnh mẽ hơn nhiều so với sử dụng Xpath. Khác với XPath, CSS selector không phụ thuộc vào cấu trúc DOM. Giúp bạn có thể thực hiện được một số tương tác mà khi sử dụng XPath thì bạn khó có thể làm được.
Bạn sẽ dễ dàng để tìm ra được locator duy nhất của phần tử bằng cách kết hợp với nhiều thuộc tính CSS khác. Tuy nhiên nó cũng đòi hỏi người dùng phải có hiểu biết sâu hơn về CSS/Javascript.
VD: Lấy ra phần tử bằng cách sử dụng cssSelector:
WebElement element= driver.findElements(By.cssSelector(“input[id=FullName’]”));
8. XPath – Truy cập vào các phần tử sử dụng XPath Expression
XPath được đánh giá là một kĩ thuật ‘perfect’ dùng để duyệt qua toàn bộ cấu trúc DOM của trang web. XPath locator khá mạnh mẽ và đáng tin cậy. Ta có thể xác định được vị trí của bất kỳ phần tử nào trên page bằng cách sử dụng Xpath. Tuy nhiên chỉ cần có một sự thay đổi nhỏ trong cấu trúc trang thì bạn sẽ phải cập nhật lại hết những thông tin liên quan bạn đã lấy trước đó.
Ta có thể phân loại XPath theo hai nhóm sau:
XPath tuyệt đối (Absolute XPath)
– Nó bắt đầu từ phần tử gốc cho đến vị trí của locator đích cần lấy.
Ví dụ:
HTML/head/body/table/tr/td
Bạn có thể dễ dàng lấy ra được XPath cho phần tử đó, tuy nhiên như đã nói ở trên, nếu cấu trúc trang bị thay đổi thì XPath này cũng phải cập nhật lại toàn bộ.
XPath tương đối (Relative XPath)
Sử dụng Relative XPath bạn sẽ dễ dàng quản lý hơn vì nó ngắn gọn hơn và súc tích hơn. Có thể bị ảnh hưởng ít hơn khi gặp vấn đề về cấu trúc trang bị thay đổi so với XPath tuyệt đối. Để lấy được XPath tương đối thì bạn sẽ mất nhiều thời gian hơn để xác định và kiểm tra được các node cần lấy.
Ví dụ:
//table/tr/td
Sử dụng XPath để lấy ra locator của phần tử bạn có thể đảm bảo được là các phần tử đều có thể được tìm ra, tuy nhiên xét về hiệu năng thì cách này sẽ chậm hơn so với sử dụng CSS, ngoài ra nó còn phụ thuộc vào trình duyệt sử dụng (như IE và FF thì việc thực thi XPath là không giống nhau).