Cách xác định Locators trong Selenium WebDriver

SELENIUM LOCATORS

Locator có thể được gọi là địa chỉ để xác định một Web element trong trang web. Các Locators là các thuộc tính HTML của một Web element thông báo cho Selenium về Web element mà Selenium cần biết để thực thi.
Có rất nhiều Web element nhưng phổ biến nhất trong số đó là:

  • Text box
  • Button
  • Drop Down
  • Hyperlink
  • Check Box
  • Radio Button

Manual Testing chúng ta có thể tự biết được nhập dữ liệu vào đâu, click vào button, checkbox nào, nhận biết được item trước và sau thay đổi như thế nào,…. Nhưng đối với automation thì làm sao máy có thể hiểu được sẽ thao tác vào link, button, check box…. nào đây? Đấy chính là lúc cần đến Locator, mỗi phần tử HTML trong trang web đều được xác định bằng Locator

II. Các loại locator trong Selenium WebDriver

1. ID

Mỗi phần tử trên trang thông thường sẽ được gắn 1 id duy nhất. Và đây là cách được đánh giá là tốt nhất khi sử dụng để lấy ra locator của phần tử.
Tuy nhiên là có một lưu ý, một số framework hỗ trợ dev sinh id tự động – có nghĩa là mỗi lần run thì phần tử đó lại sinh ra một id khác nhau, lúc này thì bạn không thể sử dụng id đó được

				
					WebElement textboxSearch = driver.findElement(By.id("small-searchterms"));

				
			

2. 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 đổ

				
					WebElement textboxSearch = driver.findElement(By.name("FirstName"));
				
			

3. Class name

Ở đây một đối tượng được truy cập với sự giúp đỡ của Class Names. Trong trường hợp này, nó là tên lớp của WebElement

				
					driver.findElement(By.className("search-box-text ui-autocomplete-input"));
				
			

4. Tag name

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.

				
					driver.findElements(By.tagName(a));
				
			

5. LinkText

Link text thì hiển thị khá rõ ràng vì nó hiển thị ngay trên UI

				
					WebElement askViblo = driver.findElement(By.linkText("Ask on Viblo »"));
				
			

6. PartialLinkText 

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.

				
					driver.findElement(By.partialLinkText("Testing"));
				
			

7. CSS 

Dựa vào đường dẫn CSS hoặc kết hợp nhiều CSS với nhau. Chúng ta có thể xác định được duy nhất hoặc nhiều phần tử element

				
					WebElement password = driver.findElement(By.cssSelector("[type='password'][placeholder='Your Password']"));
				
			

8. XPath 

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

				
					driver.findElement(By.xpath("//input[@placeholder = 'Search store' ]"))