Định vị các yếu tố trong Selenium WebDriver được thực hiện với sự giúp đỡ của findElement() và findElements(). Hai phương thức này được cung cấp bởi 2 lớp WebDriver và WebElement.
- findElement() trả về một đối tượng WebElement dựa trên tiêu chí tìm kiếm đã định hoặc kết thúc với việc ném một ngoại lệ nếu không tìm thấy bất kì yếu tố nào phù hợp với các tiêu chí tìm kiếm.
- findElements() trả về một danh sách các WebElement phù hợp với tiêu chí tìm kiếm. Nếu không có yếu tố nào được tìm thấy, nó sẽ trả về một danh sách rỗng.
Bảng sau đây liệt kê tất cả các cú pháp Java để định vị các yếu tố trong Selenium WebDriver.
Phương thức | Cú pháp | Miêu tả |
---|---|---|
By ID | driver.findElement(By.id(<element ID>)) | Định vị một yếu tố sử dụng thuộc tính ID |
By name | driver.findElement(By.name(<element name>)) | Định vị một yếu tố sử dụng thuộc tính Name |
By class name | driver.findElement(By.className(<element class>)) | Định vị một yếu tố sử dụng thuộc tính Class |
By tag name | driver.findElement(By.tagName(<htmltagname>)) | Định vị một yếu tố sử dụng HTML tag |
By link text | driver.findElement(By.linkText(<linktext>)) | Định vị một link sử dụng text của link |
By partial link text | driver.findElement(By.partialLinkText(<linktext>)) | Định vị một link sử dụng một phần text của link |
By CSS | driver.findElement(By.cssSelector(<css selector>)) | Định vị một yếu tố sử CSS selector |
By XPath | driver.findElement(By.xpath(<xpath>)) | Định vị một yếu tố sử dụng truy vấn XPath |
Cách sử dụng bộ định vị
Chúng ta sẽ tìm hiểu cách sử dụng thực tế của mỗi phương thức định vị qua các ví dụ cụ thể với trang http://www.calculator.net.
By ID
Dưới đây là một đối tượng được truy cập với sự giúp đỡ của thuộc tính ID. Trong trường hợp này, nó là ID của một textbox. Các giá trị được nhập vào textbox bằng cách sử dụng phương thức sendkeys với sự giúp đỡ của ID.
1 |
driver.findElement(By.id("t2")).sendKeys("10"); |
By Name
Dưới đây là một đối tượng được truy cập với sự giúp đỡ của thuộc tính Name. Trong trường hợp này, nó là ID của một textbox. Các giá trị được nhập vào textbox bằng cách sử dụng phương thức sendkeys với sự giúp đỡ của Name.
1 |
driver.findElement(By.name("t1")).sendKeys("20"); |
By Class Name
Dưới đây là một đối tượng được truy cập với sự giúp đỡ của các Class Name. Trong trường hợp này, nó là Class Name của WebElement. Các giá trị có thể được truy cập với sự giúp đỡ của phương thức getText. Để sử dụng List bạn cần import java.util.List
1 2 3 4 |
List<WebElement> byclass = driver.findElements(By.className("mh")); for(int i=0;i<byclass.size();i++){ System.out.println(byclass.get(i).getText()); } |
By Tag Name
DOM Tag Name của một phần tử có thể được sử dụng để xác định vị trí phần tử đặc biệt trong WebDriver. Nó rất dễ xử lý các table với sự giúp đỡ của phương thức này. Hãy xem đoạn mã sau.
1 2 3 |
List<WebElement> table = driver.findElements(By.className("panel")); List<WebElement> row = table.get(0).findElements(By.tagName("tr")); System.out.println(row.size()); |
By Link Text
Phương pháp này giúp xác định vị trí của một phần tử liên kết tương ứng với text của link đã định.
1 |
driver.findElement(By.linkText("Home")).click(); |
By partial Link Text
Phương pháp này giúp xác định vị trí của một phần tử liên kết tương ứng với một phần text của link đã định.
1 |
driver.findElement(By.partialLinkText("Tri")).click(); |
By CSS
CSS được sử dụng như là một phương pháp để xác định đối tượng web. Tuy nhiên không phải tất cả các trình duyệt đều hỗ trợ nhận dạng CSS;
1 |
driver.findElement(By.cssSelector("#sh input[type='text']")).sendKeys("percent"); |
By xPath
XPath là từ viết tắt của XML Path language. Nó là một ngôn ngữ truy vấn để chọn các nút của một XML document. Xpath dựa trên một cây đại diện của XML document và cung cấp khả năng điều hướng xung quanh cây bằng cách chọn các nút dựa nhiều tiêu chí.
1 |
driver.findElement(By.xpath(".//*[@id='b1']")).sendKeys("100"); |
Nguồn: tutorialspoint