系列资源:css
在以前的元素定位章节中咱们定位页面元素的方式都是使用 driver.findElement() 这样的方式来定位元素。经常使用操做以下:前端
driver.findElement({id:xxxxxxxx})
复制代码
在selenium-webdriver 中,findElement方法返回的为单个元素,findElements方法返回具备某一特征的全部元素集合。以百度首页为例:node
咱们能够看到导航栏,6个不一样的超连接它们的class 属性相同,若是咱们要一次获取这6个元素的话,咱们就可使用findElements方法来获取。node.js代码以下:web
require('chromedriver')
const { Builder } = require('selenium-webdriver')
let driver = new Builder().forBrowser('chrome').build()
driver.get('http://www.baidu.com')
//使用findElements 方法
driver.findElements({className:'mnav'}).then((eles)=>{
for(let ele of eles){
ele.getText().then((text)=>{
console.log("text:",text)
})
}})
复制代码
运行结果:chrome
text: 新闻
text: hao123
text: 地图
text: 视频
text: 贴吧
text: 学术
复制代码
咱们经过以上的例子能够知道调用findElement返回单个元素,findElements返回为符合某一特征的多个元素的集合。咱们能够经过使用 id ,className ,css ,xpath ,name ,linkText ,linkText partialLinkText tagName 这8种方法来定位元素。咱们知道,web页面中元素有id属性的时候,表明这个元素在整个页面中就是惟一的。因此,在使使用findElements方法查找多个元素的时候,咱们一般不会使用id属性来获取多个元素。因此,在使用findElements 方法的时候,一般不会用到元素的id属性,而其它7中定位方式均可以通用。如下简单的表格比较:浏览器
方法名 | findElement | findElenents |
---|---|---|
解释 | 查找Web页面中符合特征的某个元素 | 返回Web页面中符合某类特征的多个元素 |
支持的元素定位方式 | id ,className ,css ,xpath ,name , linkText ,linkText , partialLinkText , tagName |
className ,css ,xpath ,name ,linkText ,linkText ,partialLinkText ,tagName |
咱们知道,在web自动化测试过程,咱们使用到最多的方法为findElement去操做单个元素。那么findElements的使用场景有哪些呢?bash
在web设计上,前端工程师通常会使用相同的样式文件来定义导航栏中的元素,当咱们须要对导航栏上的文本是否显示正确的时候,咱们就可使用findElements方法定位全部元素,如上面例子中对百度的操做。前端工程师
在某些列表中,咱们统计列表中的元素有多少个,或者获取每一个列表元素。例如,电商网站中常见的商品列表。 以上是一些经常使用到的场景,固然,根据咱们系统的业务不一样,针对不一样场景,你们能够自行再总结。工具
获取更多资讯,能够关注公众号,也能够加QQ群:707467292 进行node.js自动化相关技术交流。 post