通过 XPath FindElement Selenium
⚡ 智能摘要
通过 XPath FindElement Selenium `FindElements` 命令用于唯一标识页面上的单个网页元素,而 `FindElements` 命令则返回匹配元素的完整列表。这两个命令都接受一个 `By` 定位器对象,该对象支持 ID、名称、类名和 XPath 等定位策略。
In Selenium WebDriver, 查找元素 和 查找元素 是用于在页面上定位网页元素的核心命令,之后才能对网页元素执行任何操作,例如点击或输入文本。
为什么需要“查找元素”命令?
用户与网页交互时,首先需要找到网页元素。“查找元素”命令用于唯一标识网页中的单个网页元素,而“查找元素”命令用于标识网页元素列表。可以使用多个标识符来标识一个元素。 定位策略 例如ID、名称、类名、链接文本、部分链接文本、标签名称和 XPath的.
FindElement 命令语法
以下是 FindElement 命令的语法 Selenium WebDriver:
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
FindElement 命令以 By 对象作为参数,并返回一个 WebElement 类型的对象。By 对象可以与各种定位策略一起使用,例如 ID、名称、类名、XPath 等。
定位策略可以是以下任意值:
- ID
- 姓名
- 班级名称
- 标签名
- 链接文本
- 部分链接文本
- XPath的
定位值是用于识别网页元素的唯一值。开发人员和测试人员有责任确保网页元素能够通过诸如 ID 或名称之类的特定属性进行唯一标识。
计费示例:
WebElement loginLink = driver.findElement(By.linkText("Login"));
示例:在以下位置查找元素 Selenium
以下演示应用程序用于展示 FindElement 命令的实际应用:
https://demo.guru99.com/test/ajax.html
场景:
第三步: 打开自动
第三步: 找到并单击单选按钮,然后单击“选中”按钮。
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("https://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();
}
}
FindElements 命令语法
当您需要查找与定位器匹配的所有元素(而不仅仅是第一个匹配项)时,请使用 FindElements 函数。以下是其语法:
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
FindElements 命令以 By 对象作为参数,并返回一个网页元素列表。如果使用给定的定位策略和定位值未找到任何元素,则返回空列表。
计费示例:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
示例:查找元素 Selenium
同一个演示应用程序用于展示 FindElements 如何遍历匹配元素的列表。
场景:
第三步: 打开 URL 测试应用程序
第三步: 找到单选按钮的文本并将其打印到输出控制台。
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("https://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"));
}
}
}
查找元素 vs 查找元素
以下是“查找元素”和“查找元素”命令的主要区别:
| 查找元素 | 查找元素 |
|---|---|
| 如果使用相同的定位器找到多个 Web 元素,则返回第一个 Web 元素。 | 返回 Web 元素列表 |
| 如果没有元素与定位器策略匹配,则抛出 NoSuchElementException 异常。 | 如果没有符合定位器策略的 Web 元素,则返回空列表 |
| 使用 XPath 查找元素只会找到一个网页元素 | 它将找到符合定位策略的元素集合。 |
| 不适用 | 每个网页元素都像数组一样,用一个从 0 开始的数字进行索引。 |


