文章首发于微信公众号:软测小生

为什么需要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命令的语法

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

定位器策略(Locator Strategy)可以由下列值中的任何一个来执行:

  • ID
  • Name
  • Class Name
  • Tag Name
  • Link Text
  • Partial Link Text
  • XPATH

Locator值是唯一的值,可以使用它来标识Web元素。开发人员和测试人员有责任确保Web元素能够使用特定的属性(如id或Name)进行唯一的标识。
例如:

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

FindElements语法糖如下:
FindElements命令同样接受By对象作为参数,并返回Web元素列表。如果没有找到使用给定定位器策略和定位器值的元素,则返回一个空列表。下面是FindElements命令的语法。

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

例如:

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

Find element Vs Find elements
下面是find element和find elements命令之间的主要区别。

Find Element Find Elements
如果发现多个Web元素具有相同的定位器,则返回第一个Web元素 返回Web元素列表
如果没有匹配定位器策略的元素,则抛出异常NoSuchElementException 如果没有匹配定位器策略的Web元素,则返回一个空列表
它只会找到一个Web元素 它将找到与定位器策略匹配的元素集合。
Not Applicable 每个Web元素的索引都是从数字0开始的,就像数组一样

示例:如何使用Find Element命令
下面的应用程序用于演示练习,Demo使用主页:http://demo.guru99.com/test/ajax.html

场景:

  1. 打开AUT
  2. 查找单选按钮并点击
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();
}
}

示例:如何使用Find Elements命令
场景:

  1. 打开测试应用程序Under的URL
  2. 找到单选按钮的文本并将其打印到输出控制台
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"));}}
}

总结

  • FindElement命令返回Web页面一个元素(如果有多个元素的定位器相同,则返回第一个)。
  • Find Elements命令返回条件匹配的web元素列表。
  • 如果Find Element命令没有找到匹配条件的元素,则抛出NoSuchElementException。
  • 如果没有匹配条件的元素,Find Elements命令将返回一个空列表

SeleniumWebDriver之FindElement和FindElements相关推荐

  1. selenium 示例_Selenium findElement和findElements示例

    selenium 示例 Whenever you want to interact with a web page, we require a user to locate the web eleme ...

  2. FindElement和FindElements命令

    接下来要做的是与应用程序的不同元素进行交互,因此需要在交互之前首先定位元素.定位元素可以在AndroidDriver 实例本身上完成,因为它为我们提供了" Find Element &quo ...

  3. Selenium的简单操作

    目录 1引入jar包链接驱动,打开浏览器 2常用Webderver对象方法 3定位元素 4对页面元素进行操作 5iframe处理 6获得弹出窗口 7处理alert.confirm.prompt对话框 ...

  4. selenium 表单提交结果_了解 Selenium 定位方式

    ※元素定位的重要性:在于查找元素 And 执行元素 定位元素的三种方法 1.定位单个元素:在定位单个元素时,selenium-webdriver 提示了如下一些方法对元素进行定位.在这些定位方式中,优 ...

  5. WebDriver·TestNg学习日志(Java/Ruby/.Net版)

    目录 WebDriver(JAVA)拾级而上 WebDriver拾级而上·之零 WebDriver理论 WebDriver拾级而上·之一 环境部署 WebDriver拾级而上·之二 浏览器操作 Web ...

  6. Selenium 页面自动化测试 面试 问题汇总

    1.   专业技术 在学习完Selenium的大部分接口或者方法之后,你可能会去面试自动化测试,主要是Selenium的自动化测试.下面这些问题总结,可能会对你有所帮助. 什么是Selenium? S ...

  7. Selenium之定位元素常用的8种方法整理(第一篇)

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下 ...

  8. 【转载】selenium webdriver进行元素定位

    原文:http://www.cnblogs.com/qingchunjun/p/4208159.html 在使用selenium webdriver进行元素定位时,通常使用findElement或fi ...

  9. 67道 Python自动化面试题

    1.自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2.什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符 ...

最新文章

  1. android 开发框架 怎么使用,Android快速开发框架dyh详解(二)---控件层的使用
  2. 【原创】Struts2.5.12版本中使用通配符*
  3. ABAP,Java和JavaScript的序列化,反序列化
  4. 配置文件*.xml中 classpath: 与 classpath*: 的区别
  5. java基础的知识点(一)
  6. Apache Hadoop 答疑:解决 Apache Hadoop 启动时 DataNode 启动异常的问题
  7. linux进程通讯-纯文本文件1
  8. 企业平均每年遭遇9起有针对性攻击
  9. AMPL 多差产品容量限制运输模型
  10. NMS非极大值抑制原理——目标检测
  11. 使用IBM ServerGuide安装操作系统
  12. 别找了诸位 【十二款超级好用的谷歌插件都在这】(确定不来看看?)
  13. 安全架构--13--企业资产管理体系建设总结
  14. 西门子plm_盘点西门子、罗克韦尔、PTC、达索等工业巨头们的软硬件布局
  15. Linux系统上没有scp命令,Linux scp命令没反应
  16. 10个 Istio 流量管理 最常用的例子,你知道几个?
  17. java jfif_Java文件类型工具类
  18. CISSP 第十一章 安全运营
  19. 架构师的 36 项修炼1 开篇词:7分钟Get技术人进阶技巧
  20. 网络安全——sql注入判断

热门文章

  1. 浅析运动健身APP开发的四种模式
  2. 广度优先搜索(BSF)和深度优先搜索(DSF)示例
  3. 【Visual C++】游戏开发五十一 浅墨DirectX教程十九 网格模型进阶之路
  4. BUAA离散数学第十章 图论 最短路径及关键通路 python解法
  5. 使用telnet登陆smtp服务发邮件
  6. java 航班_Java实现简单航班查询系统-Go语言中文社区
  7. 一套完整的动环监控系统,适用于各类机房、学校机房、医院机房、银行库房等
  8. 个人信息安全影响评估流程
  9. 杨致远:雅虎的华裔酋长(附图)
  10. 计算机应用技术第一课,计算机应用基础(第一课).ppt