python playwright之元素定位示例詳解
定位篇
UI 自動(dòng)化很多時(shí)候的苦惱都是定位不到,其實(shí)說(shuō)實(shí)話(huà)我到現(xiàn)在有時(shí)候也是莫名其妙的定位到或者定位不到。好在這個(gè)框架定位方式的上限非常以及特別的高,這就像人有錢(qián)和沒(méi)錢(qián)的區(qū)別主要在于選擇權(quán)一樣,有選擇的人生才是幸福的。出門(mén)想開(kāi)法拉利就開(kāi)法拉利,想開(kāi)拖拉機(jī)就開(kāi)拖拉機(jī)。
定位的詳細(xì)介紹
1、官方是不推薦 xpath 和 css 的,原話(huà)意思是 CSS 和 XPATH 是綁定于 DOM 上的,當(dāng) DOM 結(jié)構(gòu)出現(xiàn)更改他們將失效。
2、文本內(nèi)容,輸入框內(nèi)的 placeholder,labels 等這些我們可以理解成面向業(yè)務(wù)的屬性這些反而不那么容易改變所以定位應(yīng)該盡量的去面向業(yè)務(wù)。
文本選擇器定位
下文這樣是一個(gè)基礎(chǔ)的文本定位 特點(diǎn)有
1、模糊匹配
2、不缺分英文的大小寫(xiě)
3、如果存在多個(gè)會(huì)報(bào)錯(cuò)
page.locator("text=社區(qū)").click()
也可以使用簡(jiǎn)寫(xiě)的方式,注意其中的單引號(hào)
page.locator("'Log in'").click()
比較精準(zhǔn)的方式,點(diǎn)擊 id=main-nav-menu 包含的元素里文本='社區(qū)'的元素,這里使用了 text() 偽類(lèi)
page.locator("#main-nav-menu :text('社區(qū)')").click()
結(jié)合 CSS 使用,僅匹配 article 元素
page.locator('article:has-text("All products")').click()
CSS 選擇器定位
點(diǎn)擊 button 按鈕
page.locator("button").click()
通過(guò)屬性定位,點(diǎn)擊屬性中存在 href="/topics"的元素
page.locator('[href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通過(guò)屬性精準(zhǔn)定位:點(diǎn)擊 ID=nav-bar 元素下的 href="/topics"的元素
page.locator('#main-nav-menu [href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通過(guò) placeholder 定位以及輸入
page.locator('[placeholder="搜索"]').fill('電子校的故事')
布局定位結(jié)合 CSS,也是我最喜歡的
page.locator("input:right-of(:text('開(kāi)源項(xiàng)目'))").fill('電子校的故事')
非常的實(shí)用,尤其是在我們經(jīng)常測(cè)的管理系統(tǒng)里邊 dialog 里,只要左側(cè)的 label 不變~ 代碼就不用改
解釋下上邊這段代碼,大家一邊看代碼一邊把頭往顯示器的右上偏左側(cè)看下。
定位的的呢是一個(gè) Input,一個(gè)在文本為'開(kāi)源項(xiàng)目'右側(cè)的 input。
同理這里可以使用:right-of、:left-of、:above、:below、:near 這幾種布局定位的方式
根據(jù)元素可用
點(diǎn)擊一個(gè)可用的 button
page.locator("button:visible").click()
page.locator("button >> visible=true").click()
繼續(xù)說(shuō)說(shuō)屬性
點(diǎn)擊一個(gè)按鈕,它的文本包含了 Click me。另這里也可使用正則表達(dá)式
page.locator("button", has_text="Click me").click()以上就是python playwright之元素定位示例詳解的詳細(xì)內(nèi)容,更多關(guān)于python playwright元素定位的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python操作word文檔插入圖片和表格的實(shí)例演示
這篇文章主要給大家介紹了關(guān)于Python操作word文檔插入圖片和表格的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼
這篇文章主要介紹了Python+Django+MySQL實(shí)現(xiàn)基于Web版的增刪改查的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Python實(shí)戰(zhàn)之ATM取款機(jī)的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言模擬實(shí)現(xiàn)ATM取款機(jī)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09
python?memory_profiler庫(kù)生成器和迭代器內(nèi)存占用的時(shí)間分析
這篇文章主要介紹了python?memory_profiler庫(kù)生成器和迭代器內(nèi)存占用的時(shí)間分析,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06
Python?pyinstaller打包exe最新完整圖文教程
pyinstaller是一個(gè)非常簡(jiǎn)單的打包python的py文件的庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python?pyinstaller打包exe的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
Python使用wxPython和PyMuPDF實(shí)現(xiàn)合并PDF文檔
處理大量的PDF文檔可能會(huì)變得復(fù)雜和耗時(shí),但是,使用Python編程和一些強(qiáng)大的庫(kù),可以使這個(gè)任務(wù)變得簡(jiǎn)單而高效,下面我們就來(lái)看看Python如何使用wxPython和PyMuPDF合并PDF文檔并自動(dòng)復(fù)制到剪貼板吧2023-11-11
python密碼學(xué)簡(jiǎn)單替代密碼解密及測(cè)試教程
這篇文章主要介紹了python密碼學(xué)簡(jiǎn)單替代密碼解密及測(cè)試教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
了解一下python內(nèi)建模塊collections
這篇文章主要介紹了Python內(nèi)建模塊——collections的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-09-09

