系列資源: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