Tìm các phần tử trong Selenium – Tìm phần tử của XPath

Tại sao bạn cần lệnh Find Element(s)?

Tương tác với một trang web yêu cầu người dùng định vị thành phần web. Lệnh Tìm phần tử được sử dụng để xác định duy nhất một (một) phần tử web trong trang web. Trong khi đó, lệnh Find Elements được sử dụng để xác định duy nhất danh sách các thành phần web trong trang web. Có nhiều cách để xác định duy nhất một thành phần web trong trang web như ID, Tên, Tên lớp, Văn bản liên kết, Văn bản liên kết một phần, Tên thẻ và XPATH.

Cú pháp lệnh FindElement

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

Selenium Lệnh Find Element lấy đối tượng By làm tham số và trả về một đối tượng thuộc loại danh sách WebElement trong Selenium. Lần lượt theo đối tượng có thể được sử dụng với nhiều chiến lược định vị khác nhau, chẳng hạn như tìm phần tử theo ID Selenium, Tên, Tên lớp, XPATH, v.v. Dưới đây là cú pháp của lệnh FindElement trong Selenium trình điều khiển web.

Chiến lược định vị có thể là bất kỳ giá trị nào sau đây.

  • ID
  • Selenium tìm phần tử theo tên
  • Tên lớp
  • Tên thẻ
  • Text link
  • Văn bản liên kết một phần
  • XPATH

Giá trị định vị là giá trị duy nhất mà phần tử web có thể sử dụng để xác định. Trách nhiệm của nhà phát triển và người kiểm tra là đảm bảo rằng các thành phần web có thể được nhận dạng duy nhất bằng cách sử dụng một số thuộc tính nhất định như ID hoặc tên.

Ví dụ:

WebElement loginLink = driver.findElement(By.linkText("Login"));

Ví dụ: Tìm phần tử trong Selenium

Ứng dụng sau đây được sử dụng cho mục đích demo

http://demo.guru99.com/test/ajax.html

kịch bản:

Bước 1: Mở AUT

Bước 2: Tìm và nhấp vào nút radio

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("http://demo.guru99.com/test/ajax.html");

// Find the radio button for “No” using its ID and click on it
driver.findElement(By.id("no")).click();
	
//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

Cú pháp lệnh FindElements

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

Tìm các phần tử trong Selenium lệnh lấy đối tượng By làm tham số và trả về danh sách các thành phần web. Nó trả về một danh sách trống nếu không tìm thấy phần tử nào bằng cách sử dụng chiến lược định vị và giá trị định vị đã cho. Dưới đây là cú pháp của lệnh tìm phần tử.

Ví dụ:

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Ví dụ: Tìm phần tử trong Selenium

kịch bản:

Bước 1: Mở URL cho Ứng dụng đang được thử nghiệm

Bước 1: Tìm văn bản của các nút radio và in nó lên bảng điều khiển đầu ra

package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

Tìm phần tử Vs Tìm phần tử

Dưới đây là những khác biệt chính giữa lệnh tìm phần tử và tìm phần tử.

Tìm phần tử Vs Tìm phần tử
Tìm phần tử Vs Tìm phần tử trong Selenium
Tìm phần tử Tìm phần tử
Trả về phần tử web đầu tiên nếu có nhiều phần tử web được tìm thấy với cùng một bộ định vị Trả về danh sách các thành phần web
Ném ngoại lệ NoSuchElementException nếu không có phần tử nào khớp với chiến lược định vị Trả về danh sách trống nếu không có thành phần web nào khớp với chiến lược định vị
Tìm phần tử bằng XPath sẽ chỉ tìm thấy một phần tử web Nó sẽ tìm thấy một tập hợp các phần tử phù hợp với chiến lược định vị.
Không áp dụng Mỗi phần tử Web được lập chỉ mục bằng một số bắt đầu từ 0 giống như một mảng

Tổng kết

  • Lệnh Tìm phần tử trả về phần tử web khớp với phần tử đầu tiên trong trang web.
  • Lệnh Tìm phần tử trả về danh sách các phần tử web phù hợp với tiêu chí.
  • Tìm phần tử bằng XPath trong Selenium lệnh ném NoSuchElementException nếu nó không tìm thấy phần tử khớp với tiêu chí.
  • Lệnh Find Elements trả về một danh sách trống trong Selenium nếu không có phần tử nào phù hợp với tiêu chí