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

相關文章
相關標籤/搜索