UI 自動化神器:Playwright 有哪些元素定位方法

Playwright 是微軟開發的 Web 應用 的 自動化測試框架 ,它可以彌補傳統 UI 自動化框架 selenium 很多的不足,在目前衆多的 UI 自動化測試工具中脫穎而出。所以,本文章給大家介紹這個 UI 自動化神器的安裝使用和元素定位方法,如果還沒有用過的同學可以趕緊 get 起來哦~!

前****言

1、playwright 介紹

Playwright 是由微軟 2020 年開發發佈的一款新型自動化測試框架, 可以 UI 自動化測試 和接口自動化測試 移動端的 web 仿真應用。Playwright 是基於 Node.js 語言開發的,而且不需要再重新下載一個瀏覽器驅動,相當於已經寫好了,僅僅需要安裝這個庫即可。

官方中文文檔:https://playwright.net.cn/python/docs/intro

相比於 selenium 的優勢:

playwright 的特色:

1)跨瀏覽器支持:包括 Chrome、Firefox 和 WebKit 內核的瀏覽器。

2)跨平臺:在 Windows、Linux 和 macOS 上進行本地或 CI 測試,無頭或有頭模式。

3)跨語言: 在 TypeScript、JavaScript、Python、.NET、Java 中使用 Playwright API

4)測試移動端:適用於 Android 的 Google Chrome 和 Mobile Safari 的原生移動模擬。

2、安裝環境:

3、playwright 的元素定位

playwright 的元素定位方法有很多,官方文檔:https://playwright.net.cn/python/docs/locators  

第一類:get_by_xx 定位

1、 get_by_role: 通過角色方式定位元素,適用按鈕、複選框、彈框等 ; 常用的參數有兩個,第一個是角色名稱 role,第二個是元素的文本 name 或者 value 的值

2、get_by_text: 通過元素的文本內容來查找元素,適用於鏈接文本、或者 span 標籤中的文本等 ;包含兩個參數,一個是 text 標識定位的文本內容, 第二個是 exact 表示是否精確匹配;

3、get_by_placeholder: 通過元素的 placeholder 屬性來查找元素 ,也就是我們輸入框的提示信息。他的參數和 get_by_text 相同

還有很多其他的定位,但是這種定位方法瞭解即可, 我們只需要使用第二種定位器 locator,因爲可以實現一切元素定位。

第二類:locator 定位器,重點掌握,後面只需要用這個

這個 locator 方法返回的是一個 locator 定位器對象 【不是 selenium 的 element 對象】:這個 locator 對象 支持各種操作方法,通過 locator 定位器來找元素 :

對 css 和 xpath 後面可以自動識別 xpath 和 css selector 的表達式;我們先來學習一下 css 和 xpath 定位方法:

1)css 選擇器元素定位 -- 瞭解

1、根據 ID 定位:兩種寫法都可以

page.locator("#kw").fill("檸檬班")

2、根據 className 定位: 可以支持多個樣式一起寫

page.locator(".s_ipt").fill("python")  # 百度搜索框

page.locator(".s-top-right-text.c-font-normal.c-color-t.s-top-right-new").click()  # 百度設置按鈕

3、單屬性選擇定位: 需要其他的屬性一起定位,可以用標籤 [屬性名 =“屬性值”]

page.locator("input[name='wd']").fill("python")   # 百度搜索框

4、多屬性選擇定位: 如果一個屬性不能唯一定位,用個屬性組合

page.locator("input[name='wd'][id='kw']").fill("python")

2)xpath 元素定位:支持 web 頁面 + App 頁 + 小程序 ,高級強大,重點學習。屬性 + 文本 + 組合方式靈活。

絕對路徑:從根節點開始,一層一層寫出來,直到要找到元素。父 / 子 路徑和位置都涵蓋了,所以特別不穩定。

相對路徑: 以 // 開頭,相對於某個節點的路徑來找通過條件在 html 裏面找。

1、第一種寫法:

page.locator('//input[@id="kw"]')

2、第二種寫法:and or 來組合多個屬性和文本 // 元 [@屬性素標籤名稱 = 值 and @屬性 = 值 and text()= 值]

page.locator('//input[@id="su"and @type="submit"]')

3、第三種方法:contains(text(), 包含的內容) contains(@屬性名, 包含的內容)

page.locator('// 標籤名 [contains(@屬性名,'值')]')

4、層級定位: 按照 html 頁面順序 從上到下定位,//...//...//  

5、軸定位:如果元素之間有父子關係(兒子找爸爸)、兄弟關係(找哥哥 / 找弟弟),可以用軸定位

案例:

page.locator('//span[text()="Tom"]/ancestor::td/following-sibling::td//span[text()=" 私信 "]')

總 結

在本文章中,我們詳細介紹了 Playwright 框架,並與 Selenium 進行了比較。介紹了安裝配置流程,並通過實戰項目展示了其強大元素定位的能力。

通過比較 Playwright 和 Selenium,我們可以看到 Playwright 在自動化測試領域的優勢。其跨瀏覽器和跨平臺的特性,以及對現代 Web 技術的全面支持,使其成爲開發人員和測試人員的首選。

我們鼓勵讀者在實際項目中嘗試使用 Playwright 框架,體驗其簡潔的 API 和出色的性能。無論您是開發人員、測試人員還是質量保證專家,Playwright 都將成爲您工作中的得力助手。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/8cCg6qGQ9hG3HRS0fWk43w