Tech

Find Elements bằng XPath trong Selenium WebDriver

Tại sao bạn cần lệnh Find Elements?

Tương tác với một trang web yêu cầu người dùng xác định vị trí của phần tử web. Lệnh Find Element đượ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 phần tử web trong trang web. Có nhiều cách để xác định duy nhất một phần tử web trong trang web như  ID, Name, Class Name, Link Text, Partial Link Text, Tag Name và XPATH.

Xem thêm : Locators trong Selenium IDE: CSS Selector | DOM | XPath | id

Cú pháp lệnh FindElement:

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

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

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 class
  • Tên tag
  • Link Text
  • Partial Link Text
  • XPATH

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

Thí dụ:

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

Cú pháp lệnh FindElements:

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

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

Thí dụ:

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

Find Elements Vs Find Element

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


Find Element

Find Elements
Trả về phần tử web nhất đầu tiên nếu có nhiều phần tử web được tìm thấy với cùng một LocatorTrả về danh sách các phần tử web
Ném ngoại lệ NoSuchElementException nếu không có phần tử nào phù hợp với chiến lược định vịTrả về danh sách trống nếu không có phần tử web nào phù hợ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ử webNó sẽ tìm thấy một tập hợp các yếu tố phù hợp với chiến lược định vị.
Không áp dụngMỗi phần tử Web được lập chỉ mục với một số bắt đầu từ 0 giống như một mảng

Ví dụ: Cách sử dụng lệnh Find Element

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

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

Tình huống:

1. Mở AUT

2. Tìm và nhấp vào radio button

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();

}

}

Ví dụ: Cách sử dụng lệnh Find Elements

Tình huống:

1. Mở URL cho Ứng dụng Đang Kiểm tra

2. 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 lược:

  • Lệnh Find Element trả về phần tử web phù hợp với phần tử nhất đầu tiên trong trang web.
  • Lệnh Find Elements 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 lệnh Selenium ném NoSuchElementException nếu nó không tìm thấy phần tử phù hợ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í

Blog Tiền Điện Tử

Blog tiền điện tử công thông tin tổng hợp uy tín nhất tất cả các mảng xã hội, giáo dục , công nghệ số. Với khả năng số hóa mạnh mẽ hy vọng sẽ mang lại cho quý bạn đọc những thông tin chính xác nhất 24/24
Back to top button