Web自動(dòng)化常見的定位方式
為什么要學(xué)習(xí)定位
1.讓程序操作指定元素,就必須先找到此元素
2.程序不像人類用眼睛直接定位到元素
- 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)擊百度的鈕

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

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