Selenium系列教程-05 findElements 方法详解

系列资源:css

主要内容

  • findElements方法简介
  • findElement与findElements对比
  • findElements的使用场景

findElements 方法简介

在以前的元素定位章节中咱们定位页面元素的方式都是使用 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方法的对比

咱们经过以上的例子能够知道调用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

findElements 通常使用场景

咱们知道,在web自动化测试过程,咱们使用到最多的方法为findElement去操做单个元素。那么findElements的使用场景有哪些呢?bash

  • 导航栏页面元素

在web设计上,前端工程师通常会使用相同的样式文件来定义导航栏中的元素,当咱们须要对导航栏上的文本是否显示正确的时候,咱们就可使用findElements方法定位全部元素,如上面例子中对百度的操做。前端工程师

  • 页面中具备某一特征的全部元素

在某些列表中,咱们统计列表中的元素有多少个,或者获取每一个列表元素。例如,电商网站中常见的商品列表。 以上是一些经常使用到的场景,固然,根据咱们系统的业务不一样,针对不一样场景,你们能够自行再总结。工具


获取更多资讯,能够关注公众号,也能够加QQ群:707467292 进行node.js自动化相关技术交流。 post

相关文章
相关标签/搜索