自动化测试8大元素定位之xpath语法
8大元素定位
tag_name:通過標簽名稱,找出來的元素太多了
name:用戶輸入input,不出意外總會有name屬性
class_name
id:
1、同一個頁面當中,某個id只能用一次,
2、如果元素有id,會優先使用id定位,
3、不好的消息,不是所有的元素都有id
link_text:連接的文本,只能用來定位連接
partial_link_text
css_selector
xpath:用的最多
//*[@id="s-top-left"]/a[3]: xpath表達式 相對路徑: //開頭
//*[@id="kw"]
/html/body/form/div/input[1] 絕對路徑:/開頭 必須從最開頭的地方找
為什么叫路徑?和操作系統的文件路徑長的很像
xpath表達式的語法
用/還是//,測試行業,選擇相對路徑,幾乎不會選擇絕對路徑
為什么?
1、因為絕對路徑不穩定、
2、絕對路徑更長,不好找
格式:
//找的標簽名稱[@屬性名=‘屬性值’]
以百度頁面為例
例1:定義百度輸入框,以下2種方法
第一種精確匹配
//input[@type=“text”]
第二種正則表達式匹配,*:代表正則表達式:通配符,表示匹配所有的標簽名
//*[@type=“text”]
xpath組合條件
組合屬性:可以縮短查詢范圍,當定位一個元素,用一個屬性名=屬性值不能精確定位時,可以用組合屬性定位
例2:還是定位百度輸入框
格式:
//標簽名[@屬性名=‘屬性值’ and @屬性名=‘屬性值’]
//*[@type=“text” and @class=“s_ipt”]
嵌套匹配
組合通過父親找兒子關系(先找到上一級,再定位本級)
//span[@id=“s_kw_wrap”]/input[@type=“text”]
組合通過祖先找兒子關系(只要是本級的上級就可以)
//form[@id=‘form’]//input[@name=‘wd’]
通過兒子找父親
//input[@id='kw']/..
通過兒子找祖先(比較麻煩,不推薦)
//input[@id='kw']/../../..
通過兄弟姐妹找(比較麻煩)
//input[@id='kw']/../[@class='soutu-btn']
通過索引查找
xpath的索引是從1開始數的
xpath的計算索引的優先級很高
當通過//input[@type=“hidden”]可以定位多個元素的時候,加上索引
例:(//input[@type="hidden"])[3]
通過組合text文本
text不是用@符號,不是屬性,是函數 text()
比對以下2種寫法:
//a[text()=‘新聞’] text是方法名
//a[@text=‘師資團隊’] text是屬性名
例如:定位百度頁面的圖片超鏈接
//a[text()='圖片']
//i[@title="清空"]
通過函數組合contains(依據,值)
//a[contains(text(),'值')]模糊查找
//a[contains(@class,'值')]模糊查找
例:定位新聞超鏈接
通過text文本定位://a[contains(text(),'聞')]模糊查找
通過屬性名定位://a[contains(@class,'c-font-normal')]
xpath定位,如何確定唯一性?
在源代碼中ctrl+f,粘貼 查找
xpath:軸定位,軸運算
獲取父親://input[@type="text"]//parent::span
獲取祖先://input[@type="text"]//ancestor::form
后面還可以加條件 //input[@type="text"]//ancestor::form[@id='form']
同級查找,該元素(input)上方的,哥哥/姐姐
//input[@type="text"]/following-sibling::span
如果有多個哥哥就需要索引查找了
同級查找,該元素(input)下方的,妹妹/弟弟
//input[@type="text"]/preceding-sibling::span
如果有多個妹妹就需要索引查找了
總結
以上是生活随笔為你收集整理的自动化测试8大元素定位之xpath语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flask项目】项目准备之-创建Use
- 下一篇: 【Flask项目】sqlalchemy原