《最新出爐》系列初窺篇-Python+Playwright自動化測試-39-highlight() 方法之追蹤定位

1.簡介

在之前的文章中宏哥講解和分享了,為了看清自動化測試的步驟,通過JavaScript添加高亮顏色,就可以清楚的看到執行步驟了。在學習和實踐Playwright的過程中,偶然發現了使用Playwright中的highlight()方法也突出顯示Web元素。與之前的方法有異曲同工之妙。而且很簡單。highlight()方法可以突出顯示Web元素,方便調試和可視化操作。

2.測試場景

我們在日常工作中進行自動化測試,有時會遇到一個定位表達式,會同時定位到多個元素的可能,并且,有的元素是不可見的,這樣一來,不僅會導致我們的測試用例執行失敗,而且在查找問題時困難,尤其是隱藏的元素。那么我們如何在調試定位的時候就讓我們定位到的全部元素都比較直觀的展示在我們眼前呢?selenium需要我們逐一去查看,而playwright就直接提供了一個高亮的方法來突出展示web頁面上的元素。

3.高亮顯示定位到的元素

在我們調試元素定位的時候,不知道頁面上有多少個此類元素,不清楚頁面上這個元素具體顯示在什么位置,這時候就可以使用 locator.highlight()。語法如下:

locator.highlight()   

4.highlight實戰

4.1highlight高亮單個元素

我們以度娘首頁為例:高亮百度的搜索框(搜索框的元素id為kw)。

4.1.1代碼設計

4.1.2參考代碼
# coding=utf-8🔥# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-11-21
@author: 北京-宏哥
公眾號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-35-highlight() 方法之追蹤定位
'''# 3.導入模塊
from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser = playwright.chromium.launch(headless=False)context = browser.new_context()page = context.new_page()page.goto("https://www.baidu.com/")page.locator("#kw").highlight()page.wait_for_timeout(2000)context.close()browser.close()with sync_playwright() as playwright:run(playwright)
4.1.3運行代碼

1.運行代碼,右鍵Run'Test',控制臺輸出,如下圖所示:

2.運行代碼后電腦端的瀏覽器的動作。如下圖所示:

4.2highlight高亮多個元素

我們以度娘首頁為例:高亮百度的新聞(新聞的元素文本為<新聞>)。

4.2.1代碼設計

4.2.2參考代碼
# coding=utf-8🔥# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-11-21
@author: 北京-宏哥
公眾號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-35-highlight() 方法之追蹤定位
'''# 3.導入模塊
from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser = playwright.chromium.launch(headless=False)context = browser.new_context()page = context.new_page()page.goto("https://www.baidu.com/")page.get_by_text("新聞").highlight()page.wait_for_timeout(10000)context.close()browser.close()with sync_playwright() as playwright:run(playwright)
4.2.3運行代碼

1.運行代碼,右鍵Run'Test',控制臺輸出,如下圖所示:

2.運行代碼后電腦端的瀏覽器的動作。如下圖所示:

宏哥講解和分享的以上方法對于我們調試元素定位,是不是炒雞方便?

4.3元素匹配器 - nth

將定位器返回到第n個元素。下標是從0開始的。nth(0)表示選擇第一個元素。語法如下:

banana = page.get_by_role("listitem").nth(2)
4.3.1nth實戰演示

依舊使用上面的例子對新聞進行定位點擊,經過前邊的定位調試,我們確定要定位第一個新聞。

4.3.1.1代碼設計

4.3.1.2參考代碼
# coding=utf-8🔥# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行# 2.注釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-11-21
@author: 北京-宏哥
公眾號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-35-highlight() 方法之追蹤定位
'''# 3.導入模塊
from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser = playwright.chromium.launch(headless=False)context = browser.new_context()page = context.new_page()page.goto("https://www.baidu.com/")news = page.get_by_text("新聞").nth(0).click()page.wait_for_timeout(1000)context.close()browser.close()with sync_playwright() as playwright:run(playwright)
4.3.1.3運行代碼

1.運行代碼,右鍵Run'Test',控制臺輸出,如下圖所示:

2.運行代碼后電腦端的瀏覽器的動作。如下圖所示:

5.小結

今天主要講解和介紹了在代碼調試階段使用highlight()方法使得元素高亮顯示,幫助我們定位調試代碼是否有問題,靈活使用高亮顯示,可以提高我們的工作效率!好了,時間不早了,今天就分享到這里,感謝大家耐心的閱讀!!!

6.擴展

6.1元素匹配 - first&last

和nth同理,first就是匹配第一個,last就是匹配最后一個。

first等同于nth(0)

last等同于nth(-1)

使用方法和nth一樣

6.2代碼示列
def nth_news(self):# 定位第二個新聞,并且高亮該元素self.page.get_by_text("新聞").nth(1).click()# 使用first定位第一個self.page.get_by_text("新聞").first.click()# 使用last定位最后一個self.page.get_by_text("新聞").last.click()

????每天學習一點,今后必成大神-

往期推薦(由于跳轉參數丟失了,所有建議選中要訪問的右鍵,在新標簽頁中打開鏈接即可訪問)或者微信搜索: 北京宏哥? 公眾號提前解鎖更多干貨。

Appium自動化系列,耗時80天打造的從搭建環境到實際應用精品教程測試

Python接口自動化測試教程,熬夜87天整理出這一份上萬字的超全學習指南

Python+Selenium自動化系列,通宵700天從無到有搭建一個自動化測試框架

Java+Selenium自動化系列,仿照Python趁熱打鐵嘔心瀝血317天搭建價值好幾K的自動化測試框架

Jmeter工具從基礎->進階->高級,費時2年多整理出這一份全網超詳細的入門到精通教程

Fiddler工具從基礎->進階->高級,費時100多天吐血整理出這一份全網超詳細的入門到精通教程

Pycharm工具基礎使用教程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14044.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eNSP-集線器(hub)連接局域網

一、拓撲結構搭建 二、主機配置 pc1、pc2、pc3 三、測試 Hub相當于大家共享一條線路(類似于電線搭電)&#xff0c;線路上的所有的設備都會接收同樣的信息。

路由器不能端口映射什么原因?如何設置內網映射?

近期有小伙伴發來求助信息&#xff0c;他以前開游戲服務器和別人一起玩&#xff0c;那個時候端口映射還好&#xff0c;不知道哪一天開始突然不行了&#xff0c;已經是公網了&#xff0c;光貓是橋接的狀態&#xff0c;連路由器都換了&#xff0c;就是不能端口映射開服務器&#…

VAE-變分自編碼器(Variational Autoencoder,VAE)

變分自編碼器&#xff08;Variational Autoencoder&#xff0c;VAE&#xff09;是一種生成模型&#xff0c;結合了概率圖模型與神經網絡技術&#xff0c;廣泛應用于數據生成、表示學習和數據壓縮等領域。以下是對VAE的詳細解釋和理解&#xff1a; 基本概念 1. 自編碼器&#…

基于 Milvus Cloud + LlamaIndex 實現初級 RAG

初級 RAG 初級 RAG 的定義 初級 RAG 研究范式代表了最早的方法論,在 ChatGPT 廣泛采用后不久就取得了重要地位。初級 RAG 遵循傳統的流程,包括索引創建(Indexing)、檢索(Retrieval)和生成(Generation),常常被描繪成一個“檢索—讀取”框架,其工作流包括三個關鍵步…

AWS安全性身份和合規性之Key Management Service(KMS)

AWS Key Management Service&#xff08;KMS&#xff09;是一項用于創建和管理加密密鑰的托管服務&#xff0c;可幫助客戶保護其數據的安全性和機密性。 比如一家醫療保健公司需要在AWS上存儲敏感的病人健康數據&#xff0c;需要對數據進行加密以確保數據的機密性。他們使用AW…

課時134:awk實踐_邏輯控制_自定義函數

1.3.7 自定義函數 學習目標 這一節&#xff0c;我們從 基礎知識、簡單實踐、小結 三個方面來學習。 基礎知識 需求 雖然awk提供了內置的函數來實現相應的內置函數&#xff0c;但是有些功能場景&#xff0c;還是需要我們自己來設定&#xff0c;這就用到了awk的自定義函數功能…

WebSocket簡介

參考&#xff1a;Java NIO實現WebSocket服務器_nio websocket-CSDN博客 WebSocket API是HTML5中的一大特色&#xff0c;能夠使得建立連接的雙方在任意時刻相互推送消息&#xff0c;這意味著不同于HTTP&#xff0c;服務器服務器也可以主動向客戶端推送消息了。 WebSocket協議是…

使用TensorBoard記錄功能時,添加SummaryWriter到callbacks,某些版本可能不適用該如何修改

如果發現將SummaryWriter直接添加到callbacks不被支持&#xff0c;您可以采取另一種方式來集成TensorBoard記錄功能&#xff0c;即通過自定義回調函數來實現。Hugging Face Transformers庫允許用戶自定義訓練回調&#xff0c;這可以用來在訓練過程中向TensorBoard寫入日志。 下…

配置yum源

以下是在 Linux 系統中配置新的 yum 源的一般步驟和命令示例&#xff08;以 CentOS 系統為例&#xff09;&#xff1a; 備份原有 yum 源配置文件&#xff1a;mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 創建新的 yum 源配置文件&#xff08…

【PB案例學習筆記】-08 控件拖動實現

寫在前面 這是PB案例學習筆記系列文章的第8篇&#xff0c;該系列文章適合具有一定PB基礎的讀者。 通過一個個由淺入深的編程實戰案例學習&#xff0c;提高編程技巧&#xff0c;以保證小伙伴們能應付公司的各種開發需求。 文章中設計到的源碼&#xff0c;小凡都上傳到了gitee…

反序列化漏洞的入門知識總結

1.概念定義 序列化與反序列化的目的是讓數據在傳輸和處理的時候更簡單&#xff0c;更快&#xff0c;反序列化出現在多種同面向對象語言所開發的網站和軟件上&#xff0c;比如java&#xff0c;php&#xff0c;python等等&#xff0c;如果有語言一個都沒學的&#xff0c;可以先去…

1941springboot VUE 服務機構評估管理系統開發mysql數據庫web結構java編程計算機網頁源碼maven項目

一、源碼特點 springboot VUE服務機構評估管理系統是一套完善的完整信息管理類型系統&#xff0c;結合springboot框架和VUE完成本系統&#xff0c;對理解JSP java編程開發語言有幫助系統采用springboot框架&#xff08;MVC模式開發&#xff09;&#xff0c;系統具有完整的源代…

【NOIP2014普及組復賽】題2:比例簡化

題2&#xff1a;比例簡化 【題目描述】 在社交媒體上&#xff0c;經常會看到針對某一個觀點同意與否的民意調查以及結果。例如&#xff0c;對某一觀點表示支持的有 1498 1498 1498 人&#xff0c;反對的有 902 902 902 人&#xff0c;那么贊同與反對的比例可以簡單的記為 …

計算機-編程相關

在 Linux 中、一切都是文件、硬件設備是文件、管道是文件、網絡套接字也是文件。 for https://juejin.cn/post/6844904103437582344 fork 進程的一些問題 fork 函數比較特殊、一次調用會返回兩次。在父進程和子進程都會返回。 每個進程在內核中都是一個 taskstruct 結構、for…

ECMAScript、BOM與DOM:網頁開發的三大基石

在深入Web開發的世界時&#xff0c;有三個核心概念構成了理解網頁如何工作以及如何與之交互的基礎&#xff1a;ECMAScript、BOM&#xff08;Browser Object Model&#xff09;&#xff0c;以及DOM&#xff08;Document Object Model&#xff09;。本文旨在簡要介紹這三個概念&a…

Thingsboard規則鏈:Entity Type Switch節點詳解

在物聯網&#xff08;IoT&#xff09;領域&#xff0c;隨著設備數量的爆炸式增長和數據復雜性的增加&#xff0c;高效、靈活的數據處理機制變得至關重要。作為一款先進的物聯網平臺&#xff0c;ThingsBoard提供了強大的規則鏈&#xff08;Rule Chains&#xff09;功能&#xff…

第四節 Starter 加載時機和源碼理解

tips&#xff1a;每個 springBoot 的版本不同&#xff0c;代碼的實現存會存在不同。 上一章&#xff0c;我們聊到 mybatis-spring-boot-starter&#xff1b; 簡單分析了它的結構。 這一章我們將著重分析 Starter 的加載機制&#xff0c;并結合源碼進行分析理解。 一、加載實際…

問題與解決:element ui垂直菜單展開后顯示不全

比如我這個垂直菜單展開后&#xff0c;其實系統管理下面還有其他子菜單&#xff0c;但是顯示不出來了。 解決方法很簡單&#xff0c;只需要在菜單外面包一層el-scrollbar&#xff0c;并且將高度設置為100vh。

Laravel 11 PHP8

一直都是用laravel 7 左右的&#xff0c;現在要求將項目升級到laravel 11 和使用PHP8&#xff0c;隨手記錄一些小問題&#xff0c;laravel 11的包是領導給的&#xff0c;沒有使用composer 安裝&#xff0c;所以我也不確定和官方的是否一致 遇到這問題 可以這樣 env 中默認的數…

基于若依的旅游推薦管理系統(spring boot+vue+mybatis+Ajax)

一、項目目的 隨著社會的高速發展&#xff0c;人們生活水平的不斷提高&#xff0c;以及工作節奏的加快&#xff0c;旅游逐漸成為一個熱門的話題&#xff0c;因為其形式的多樣&#xff0c;涉及的面比較廣&#xff0c;成為人們放松壓力&#xff0c;調節情緒的首要選擇。 傳統的旅…