Web自動(dòng)化元素定位之xpath定位詳解

Web自動(dòng)化常見的定位方式

為什么要學(xué)習(xí)定位

1.讓程序操作指定元素,就必須先找到此元素

2.程序不像人類用眼睛直接定位到元素

  1. webDriver提供了八種定位元素的方式

定位方式總結(jié)

1.id、name、class_name、tag_name:根據(jù)元素的標(biāo)簽或元素的屬性來(lái)進(jìn)行定位
2.link_text、partial_link_text:根據(jù)超鏈接的文本來(lái)進(jìn)行定位(a標(biāo)簽)
3.xpath:為元素路徑定位--重點(diǎn)4.cSs: 為css選擇器定位(樣式定位)


元素定位

ID定位

說明:HTML規(guī)定id屬性在整個(gè)HTML文檔中必須是唯一的,id定位就是通過元素的id屬性來(lái)定位元素;
前提:元素有id屬性
id定位方法: find_element_by_id0
需求:打開百度界面(https://www.baidu.com/),通過id定位,輸入信息,點(diǎn)擊百度的鈕

ID定位

tag _name標(biāo)簽定位

注:由于HTML源碼中,經(jīng)常會(huì)出現(xiàn)很多相同的的標(biāo)簽名,所以一般不使用該定位方式

tag _name是通過標(biāo)簽名稱來(lái)定位的,如a標(biāo)簽
https://hao.uisdc.com/

元素定位

link text定位

說明:link_text定位于前面4個(gè)定位有所不同,它專門用來(lái)定位超鏈接文本(<a>文本值</a>)
前提:定位的元素是鏈接標(biāo)簽(a標(biāo)簽)
link_text定位方法: find_element_by_link_text()
打開百度首頁(yè),通過link_text(鏈接文本)定位到【新聞】按鈕,并進(jìn)行點(diǎn)擊操作

元素定位

元素組定位

元素組定位方式: find_elements_by_xxx

作用:
1.查找返還定位所有符合條件的元素
⒉.返還的定位元素格式為列表格式

說明:
列表數(shù)據(jù)格式的讀取需要指定下標(biāo)(下標(biāo)從0開始)
案例要求:打開百度頁(yè)面
https://www.baidu.com/,通過元素組定位>定位: "http://*[@id='s-top-left']/a"

元素定位

xpath定位

xpath概述:--位置定位(路徑方式)

1.xpath即為xml path的簡(jiǎn)稱,它是一種用來(lái)確定XML文檔中某部分位置的語(yǔ)言。
2.HTML可以看做是XML的一種實(shí)現(xiàn),所以selenium用戶可以使用這種強(qiáng)大的語(yǔ)言在web應(yīng)用中來(lái)定位元素3.xpath為強(qiáng)大的語(yǔ)言,是因?yàn)樗蟹浅l`活的定位策略。

定位方法: find_element_by_xpath()

xpath定位策略(方式)

1.路徑定位--絕對(duì)路徑、相對(duì)路徑
⒉利用元素屬性定位
3.層級(jí)與屬性結(jié)合定位
4.屬性與邏輯定位結(jié)合

路徑定位

絕對(duì)路徑:從最外層元素到指定元素之間所有經(jīng)過元素層級(jí)路徑;如/html/body/div/p[2]

提示:
1.絕對(duì)路徑是以/開始
⒉.通過瀏覽器查看元素屬性,右擊復(fù)制xpath快速生成

相對(duì)路徑:從第一個(gè)符合條件元素開始(一般配合屬性來(lái)區(qū)分)﹔如//input[@id='kw']

提示:
1.相對(duì)路徑以//開始
⒉.通過瀏覽器查看元素屬性,右擊復(fù)制xpath快速生成

xpath表達(dá)式描述及格式

元素定位

xpath通過屬性定位

xpath通過該元素已有的屬性進(jìn)行定位,如id, name等等


元素定位

xpath通過text文本定位元素

當(dāng)前元素沒有id.name這些屬性,如何定位?
打開商城界面(http:llshopxo.hctestedu.com/index.php?s=/indexluser/logininfo.html),通過
xpath定位郵
箱登錄標(biāo)簽

定義元素:ll*[text()="郵箱驗(yàn)證碼"]


元素定位

xpath通過層級(jí)定位元素

要找到的元素沒有屬性,但是它的父級(jí)有;
url = "http:llshopxo.hctestedu.com/index.php?s=/index/userllogininfo.html"
示例:lI*[@class='login-top']/a


元素定位

xpath邏輯運(yùn)算

解決元素之間相同屬性重名問題;
示例: 'll*[text()="注冊(cè)" and @class="am-btn am-btn-secondary am-btn-xs am-radius"]'
http:/llshopxo.hctestedu.com/index.php?s=/index/userlogininfo.html


元素定位

技術(shù)棧

  • Python
  • selenium/appium
  • POM分層思想
  • DDT
  • zmail
  • logging
  • yaml/excel
  • requests

軟件測(cè)試全棧工程師 公號(hào):程序員一凡.png

1、點(diǎn)贊。防止以后找不到,想看的時(shí)候,在自己主頁(yè)就能找到了,很方便;
2、關(guān)注我。讓我們成為長(zhǎng)期關(guān)系,下一篇文章會(huì)分享更多的硬核干貨;
3、本文章學(xué)習(xí)資源,均可以免費(fèi)分享。

文章首發(fā)于微信公眾號(hào):程序員一凡

一個(gè)用心碼了這么多文字的人,往往渴望得到大家的認(rèn)可。如果你覺得這篇文章對(duì)你有幫助,雙擊屏幕,給我點(diǎn)個(gè)贊呀!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容