文章首发于微信公众号:软测小生
为什么需要Find Element/s命令?与Web页面的交互需要用户定位Web元素。FindElement命令用于唯一地标识页面中的(单个)Web元素。然而,FindElements命令用于唯一地标识页面中的Web元素列表。
有多种方法可以标识页面中的Web元素,比如ID, Name, Class Name, Link Text, Partial Link Text, Tag名称和XPath。
FindElement语法糖如下:
FindElement命令接受By对象作为参数,并返回一个WebElement类型的对象。按对象依次可用于各种定位策略,如ID, Name, Class Name, XPath等。下面是Selenium WebDriver中的FindElement命令的语法
定位器策略(Locator Strategy)可以由下列值中的任何一个来执行:
IDNameClass NameTag NameLink TextPartial Link TextXPATHLocator值是唯一的值,可以使用它来标识Web元素。开发人员和测试人员有责任确保Web元素能够使用特定的属性(如id或Name)进行唯一的标识。
例如:
FindElements语法糖如下:
FindElements命令同样接受By对象作为参数,并返回Web元素列表。如果没有找到使用给定定位器策略和定位器值的元素,则返回一个空列表。下面是FindElements命令的语法。
例如:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));Find element Vs Find elements
下面是find element和find elements命令之间的主要区别。
示例:如何使用Find Element命令
下面的应用程序用于演示练习,Demo使用主页:http://demo.guru99.com/test/ajax.html
场景:
打开AUT查找单选按钮并点击 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 stubSystem.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 itdriver.findElement(By.id("no")).click();//Click on Check Buttondriver.findElement(By.id("buttoncheck")).click();}}示例:如何使用Find Elements命令
场景:
总结
FindElement命令返回Web页面一个元素(如果有多个元素的定位器相同,则返回第一个)。Find Elements命令返回条件匹配的web元素列表。如果Find Element命令没有找到匹配条件的元素,则抛出NoSuchElementException。如果没有匹配条件的元素,Find Elements命令将返回一个空列表