系列資源:
- Selenium系列教程-01 環境配置
- Selenium系列教程-02 使用Chrome開發者工具
- Selenium系列教程-03 使用開發者工具進行元素定位
- Selenium系列教程-04 常用的元素定位方法
- Selenium系列教程-05 findElements 方法詳解
- Selenium系列教程-06 圖片上傳以及Web Element常用操作方法
- Selenium系列教程-07 使用Actions類模擬複雜操作
- Selenium系列教程-08 瀏覽器本身行為控制
- Selenium系列教程-09 如何切換iframe
- Selenium系列教程-10 如何執行JavaScript方法
主要內容
- 通過id屬性定位元素
- 通過name屬性查詢
- 通過class屬性查詢
- 通過xpath查詢元素
通過id屬性定位元素
id在html中規定了元素的唯一屬性。如果元素有id屬性的話,推薦使用id屬性來定位元素。以百度搜尋為例,如下圖:
通過元素定位器找到輸入框的元素id為 kw ,所以在selenium程式碼中,我們就可以寫程式碼:require('chromedriver')
const { Builder } = require('selenium-webdriver')
let driver = new Builder().forBrowser('chrome').build()
driver.get('http://www.baidu.com')
//使用id屬性值定位元素
driver.findElement({id:'kw'}).sendKeys('CukeTest')
複製程式碼
通過name屬性定位元素
html中我們可以為元素新增name屬性,使用name屬性時,我們要確保這個元素在整個頁面中name屬性值唯一。例如,在百度首頁中,輸入框name屬性為 wd ,並且 wd 在整個頁面中值為唯一。所以我們程式碼可以這樣:
require('chromedriver')
const { Builder } = require('selenium-webdriver')
let driver = new Builder().forBrowser('chrome').build()
driver.get('http://www.baidu.com')
//使用name屬性值來定位元素
driver.findElement({name:'wd'}).sendKeys('CukeTest')
複製程式碼
通過class屬性定位元素
html 中我們通為元素提供class屬性來規定元素的CSS類名。大多數情況下,我們使用class來定義網頁元素的顯示樣式。如果一個頁面中有多個元素使用同一個class,用class屬性來定位元素時會找到第一個。為減少出錯可能,請保證class名在當前頁面中被唯一的地方使用。以百度首頁為例,輸入框的class屬性值為s_ipt
並且這個值是唯一的。所以我們可以這樣寫程式碼:
require('chromedriver')
const { Builder } = require('selenium-webdriver')
let driver = new Builder().forBrowser('chrome').build()
driver.get('http://www.baidu.com')
//使用class屬性值定位元素
driver.findElement({className:'s_ipt'}).sendKeys('CukeTest')
複製程式碼
通過XPath定位元素
XPath 是一門在 XML 文件中查詢資訊的語言。它在 XML 文件中通過元素和屬性進行導航。我們也可以用XPath來定位html的頁面元素。關於XPath的具體語法學習,大家可以參考http://www.w3school.com.cn/xpath/xpath_intro.asp學習,這裡給大家介紹一種通過Chrome開發者工具自動生成XPath的方式。
- 1.開啟百度首頁,使用Chrome開發者工具定位到輸入框
- 2.在元素上右鍵--Copy--Copy XPath 如下圖:
require('chromedriver')
const { Builder } = require('selenium-webdriver')
let driver = new Builder().forBrowser('chrome').build()
driver.get('http://www.baidu.com')
// 使用xpath路徑選擇器查詢元素
driver.findElement({xpath:'//*[@id="kw"]'}).sendKeys('CukeTest')
複製程式碼
以上為我們常用的4種定位元素的方法,還有另外4種元素定位方法,會在下一篇文章中介紹。
此為Web UI自動化測試系列文章三, 關注本系列分享,熟練掌握Web UI自動化測試。
獲取更多資訊,可以關注公眾號,也可以加QQ群:707467292 進行node.js自動化相關技術交流。