Selenium - Bộ định vị
Định vị các phần tử trong Selenium WebDriver được thực hiện với sự trợ giúp của các phương thức findElement () và findElements () được cung cấp bởi WebDriver và lớp WebElement.
findElement () trả về một đối tượng WebElement dựa trên tiêu chí tìm kiếm được chỉ định hoặc kết thúc bằng việc ném ra một ngoại lệ nếu nó không tìm thấy bất kỳ phần tử nào phù hợp với tiêu chí tìm kiếm.
findElements () trả về danh sách các WebElements phù hợp với tiêu chí tìm kiếm. Nếu không tìm thấy phần tử nào, nó sẽ trả về một danh sách trống.
Bảng sau liệt kê tất cả cú pháp Java để định vị các phần tử trong Selenium WebDriver.
phương pháp | Cú pháp | Sự miêu tả |
---|---|---|
Theo ID | driver.findElement (By.id (<ID phần tử>)) | Định vị một phần tử bằng thuộc tính ID |
Bằng tên | driver.findElement (By.name (<tên phần tử>)) | Định vị một phần tử bằng thuộc tính Name |
Theo tên lớp | driver.findElement (By.className (<element class>)) | Định vị một phần tử bằng thuộc tính Class |
Theo tên thẻ | driver.findElement (By.tagName (<htmltagname>)) | Định vị một phần tử bằng thẻ HTML |
Bằng văn bản liên kết | driver.findElement (By.linkText (<linktext>)) | Định vị một liên kết bằng văn bản liên kết |
Bằng văn bản liên kết một phần | driver.findElement (By.partialLinkText (<linktext>)) | Định vị một liên kết bằng cách sử dụng một phần văn bản của liên kết |
Bởi CSS | driver.findElement (By.cssSelector (<css selector>)) | Định vị một phần tử bằng công cụ chọn CSS |
Bởi XPath | driver.findElement (By.xpath (<xpath>)) | Định vị một phần tử bằng cách sử dụng truy vấn XPath |
Sử dụng bộ định vị
Bây giờ chúng ta hãy hiểu cách sử dụng thực tế của từng phương pháp định vị với sự trợ giúp của https://www.calculator.net
Theo ID
Ở đây một đối tượng được truy cập với sự trợ giúp của các ID. Trong trường hợp này, nó là ID của hộp văn bản. Các giá trị được nhập vào hộp văn bản bằng phương pháp sendkeys với sự trợ giúp của ID (cdensity).
driver.findElement(By.id("cdensity")).sendKeys("10");
Bằng tên
Ở đây một đối tượng được truy cập với sự trợ giúp của tên. Trong trường hợp này, nó là tên của hộp văn bản. Các giá trị được nhập vào hộp văn bản bằng phương pháp sendkeys với sự trợ giúp của ID (cdensity).
driver.findElement(By.name("cdensity")).sendKeys("10");
Theo tên lớp
Ở đây, một đối tượng được truy cập với sự trợ giúp của Tên lớp. Trong trường hợp này, nó là tên Lớp của WebElement. Giá trị có thể được truy cập với sự trợ giúp của phương thức gettext.
List<WebElement> byclass = driver.findElements(By.className("smalltext smtb"));
Theo tên thẻ
Tên thẻ DOM của một phần tử có thể được sử dụng để định vị phần tử cụ thể đó trong WebDriver. Rất dễ dàng để xử lý các bảng với sự trợ giúp của phương pháp này. Hãy xem đoạn mã sau.
WebElement table = driver.findElement(By.id("calctable"));
List<WebElement> row = table.findElements(By.tagName("tr"));
int rowcount = row.size();
Bằng văn bản liên kết
Phương pháp này giúp xác định vị trí một phần tử liên kết phù hợp với văn bản hiển thị.
driver.findElements(By.linkText("Volume")).click();
Bằng văn bản liên kết một phần
Phương pháp này giúp xác định vị trí một phần tử liên kết với một phần văn bản hiển thị phù hợp.
driver.findElement(By.partialLinkText("Volume")).click();
Bởi CSS
CSS được sử dụng như một phương pháp để xác định webobject, tuy nhiên KHÔNG phải tất cả các trình duyệt đều hỗ trợ nhận dạng CSS.
WebElement loginButton = driver.findElement(By.cssSelector("input.login"));
Bởi XPath
XPath là viết tắt của ngôn ngữ đường dẫn XML. Nó là một ngôn ngữ truy vấn để chọn các nút từ một tài liệu XML. XPath dựa trên biểu diễn dạng cây của các tài liệu XML 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 sử dụng nhiều tiêu chí khác nhau.
driver.findElement(By.xpath(".//*[@id = 'content']/table[1]/tbody/tr/td/table/tbody/tr[2]/td[1]/input")).sendkeys("100");