《最新出爐》系列入門篇-Python+Playwright自動化測試-40-錄制生成腳本

宏哥微信粉絲群:https://bbs.csdn.net/topics/618423372?有興趣的可以掃碼加入

1.簡介

各種自動化框架都會有腳本錄制功能, playwright這么牛叉當然也不例外。很早之前的selenium、Jmeter工具,發展到每種瀏覽器都有對應的錄制插件。今天我們就來看下微軟自動化框架playwright是如何錄制腳本的。很多小伙伴或者童鞋們會覺得奇怪,怎么現在才將錄制生成腳本啊,要是早點講解和分享,我還費什么勁,揪頭發寫代碼啊。宏哥這里說一下:這么做的目的就是為了錄制生成腳本打基礎的。要不然開始直接上手就錄制了,就算生成腳本你也不知道什么意思,更不用說腳本中有錯誤需要你調試修改腳本了。playwright 可以支持自動錄制生成腳本,也就是說只需要在頁面上點點點,就可以自動生成對應的腳本了。

2.啟動腳本自動錄制

1.在CMD命令行中,使用如下命令,打開自動錄制功能:

playwright codegen

2.執行該命令后,程序會自動打開兩個窗口,一個是瀏覽器窗口,您可以在其中與要測試的網站進行交互,另一個是 Playwright Inspector 窗口,您可以在其中記錄測試、復制測試、清除測試以及更改測試語言。隨著我們在瀏覽器窗口中進行手動操作,在Playwright Inspector界面中會自動生成手動操作對應的自動化代碼。如下圖所示:

3.在Playwright Inspector界面的Target選項中,可以切換編程語言:Python、Java、Node.js、.NET C#。如下圖所示:

4.在瀏覽器界面中,當把鼠標放置在某個區域上,會自動提示出定位該位置的選擇器代碼,使用起來非常方便。如下圖所示:

3.關閉腳本自動錄制

3.1方法一

錄制完成后,手動關掉瀏覽器即可。

3.2方法二

在CMD命令行中,使用快捷鍵Ctrl+C,然后輸入Y,關閉自動錄制功能,如下圖所示:

4.自動保存錄制腳本到本地文件

如果直接使用“playwright codegen”命令啟動腳本錄制,雖然在錄制的過程中會自動生成腳本,但關掉瀏覽器后,生成的腳本也被自動關掉了。這樣就再也找不回來了,白白辛苦半天。

如果想將生成的腳本自動保存在文件中,可以使用如下命令啟動腳本錄制:

playwright codegen -o 本地文件名

使用“-o”命令指定一個本地文件,在腳本錄制完成后,自動生成的腳本會保存在該文件中。

5.啟動瀏覽器時,自動打開指定頁面

如果未指定訪問的頁面時,錄制命令自動打開一個空白頁面。但我們可以使用如下命令,讓瀏覽器在啟動后,自動打開一個指定頁面。

playwright codegen 指定打開的網址 -o script.py

保存到本地的文件:

6.項目實戰

6.1同步生成腳本

宏哥這里以百度搜索“北京-宏哥”為例。一個完整的搜索流程代碼生成如下:

參開代碼:

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").click()page.locator("#kw").fill("北京-宏哥")page.get_by_role("button", name="百度一下").click()# ---------------------context.close()browser.close()with sync_playwright() as playwright:run(playwright)
6.2異步生成腳本

1.啟動自動錄制腳本。

2.在Target切換到異步,如下圖所示:

3.開始錄制:一個完整的搜索流程代碼生成如下:

參開代碼:

import asynciofrom playwright.async_api import Playwright, async_playwright, expectasync def run(playwright: Playwright) -> None:browser = await playwright.chromium.launch(headless=False)context = await browser.new_context()page = await context.new_page()await page.goto("https://www.baidu.com/")await page.locator("#kw").click()await page.locator("#kw").fill("北京-宏哥")await page.get_by_role("button", name="百度一下").click()# ---------------------await context.close()await browser.close()async def main() -> None:async with async_playwright() as playwright:await run(playwright)asyncio.run(main())
6.3pytest框架生成腳本

如果你是寫自動化測試用例,還能自動生成 pytest 框架的代碼,太牛叉了。。。

1.啟動自動錄制腳本。

2.在Target切換到Pytest,如下圖所示:

3.開始錄制:一個完整的搜索流程代碼生成如下:

?參開代碼:

from playwright.sync_api import Page, expectdef test_example(page: Page) -> None:page.goto("https://www.baidu.com/")page.locator("#kw").click()page.locator("#kw").fill("北京-宏哥")page.get_by_role("button", name="百度一下").click()

?7.擴展

7.1錄制相關命令操作

playwright還有很多錄制的命令操作,有興趣的可以自己試一下。相關命令參數如下:

1.codegen在瀏覽器中運行并執行操作

playwright codegen playwright.dev

2.Playwright 打開一個瀏覽器窗口,其視口設置為特定的寬度和高度,并且沒有響應,因為需要在相同條件下運行測試。
使用該--viewport選項生成具有不同視口大小的測試。

playwright codegen --viewport-size=800,600 playwright.dev

3.--device?使用設置視口大小和用戶代理等選項模擬移動設備時記錄腳本和測試。
模擬移動設備iPhone11,注意:device的值必須用雙引號,并且區分大小寫

playwright codegen --device="iPhone 11" playwright.dev 

4.模擬配色

playwright codegen --color-scheme=dark playwright.dev

5.模擬地理位置、語言和時區

playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" maps.google.com

6.保留經過身份驗證的狀態
運行codegen以在會話結束時--save-storage保存cookie和localStorage 。這對于單獨記錄身份驗證步驟并在稍后的測試中重用它很有用。

執行身份驗證并關閉瀏覽器后,auth.json將包含存儲狀態。

playwright codegen --save-storage=auth.json

運行--load-storage以消耗先前加載的存儲。這樣,所有的cookie和localStorage都將被恢復,使大多數網絡應用程序進入身份驗證狀態。

playwright open --load-storage=auth.json my.web.app
playwright codegen --load-storage=auth.json my.web.app
# Perform actions in authenticated state.
7.2page.pause() 斷點調試

如果您想在某些非標準設置中使用 codegen(例如,使用browser_context.route()),可以調用page.pause(),這將打開一個帶有 codegen 控件的單獨窗口。這個相比大家在宏哥之前注釋的代碼里看到過,主要是用來調試代碼的。

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:# Make sure to run headed.browser = p.chromium.launch(headless=False)# Setup context however you like.context = browser.new_context() # Pass any optionscontext.route('**/*', lambda route: route.continue_())# Pause the page, and start recording manually.page = context.new_page()page.pause()

8.小結

今天這一篇主要講解和分享了錄制的啟動、關閉和完整錄制流程以及其他命令的錄制。?好了,時間不早了,關于playwright的錄制先介紹講解到這里,感謝您耐心的閱讀!!!

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

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

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

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

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

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

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

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

Pycharm工具基礎使用教程

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

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

相關文章

牛客NC392 參加會議的最大數目【中等 貪心+小頂堆 Java/Go/PHP 力扣1353】

題目 題目鏈接: https://www.nowcoder.com/practice/4d3151698e33454f98bce1284e553651 https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/description/ 思路 貪心優先級隊列Java代碼 import java.util.*;public class Solution {/**…

java面試高級篇(JVM、Mysql、Redis、Kafka)

文章目錄 面試專題-java高級篇1. JVM有做過jvm的調優嗎?常用的jvm參數調優有哪些?如果jvm持續一段時間頻繁的發生Young GC (輕GC) 可能原因有哪些? 2. Mysql2.1. 基本功(見為知筆記)2.2. 什么是索引2.3. 索引的優劣勢2.4. MySQL的索引結構2.4.1. B-Tree索引2.4.2. BTree索引…

外賣系統源碼開發全攻略:外賣小程序與后臺管理系統的設計與實現

今天,小編將詳細介紹外賣系統源碼的開發全攻略,從需求分析到設計與實現,為開發者提供全面指導。 一、需求分析 1.用戶需求 用戶是外賣系統的核心,需滿足以下基本需求: -瀏覽菜單并下單 -實時追蹤訂單 -多種支付方…

每日一題——博弈論(枚舉與暴力)

博弈論 題目描述 運行代碼 #include<iostream> #include<vector> using namespace std; int main(){int n;cin >> n;vector<int> d(n,0);for(int i 0;i < n;i){cin >> d[i];}vector<int> in(1000,0);for(int k 1;k<3;k){for(int…

ESP32燒錄AT固件并進行MQTT通訊

首先下載AT固件 發布的固件 - ESP32 - — ESP-AT 用戶指南 latest 文檔 下載燒錄工具 下載指導 - ESP32 - — ESP-AT 用戶指南 latest 文檔 燒錄后注意usb的串口是不能發AT指令的 需要用16和17腳 用AT指令確認OK后連WIFI ATCWMODE1 //設置客戶端模式 ATCWLAP …

mysql誤刪后使用binlog恢復數據

1 預期效果 使用 binlog 恢復數據的預期效果是將誤刪的數據還原到誤刪之前的狀態&#xff0c;以減少或消除數據丟失的影響。通過正確解析和執行 binlog 中的操作記錄&#xff0c;可以重新執行誤刪操作之后的插入、更新或刪除操作&#xff0c;從而恢復被誤刪的數據。 數據恢復&…

Cocos Creator 編輯器的數據綁定詳解

Cocos Creator 是一款由 Cocos 平臺推出的游戲開發工具&#xff0c;它集成了圖形化編輯器、腳本引擎和資源管理器等功能&#xff0c;方便開發者快速地創建游戲。其中&#xff0c;數據綁定是 Cocos Creator 編輯器中非常重要的一個功能&#xff0c;它可以幫助開發者實現頁面元素…

三生隨記——山洞之謎

第一章&#xff1a;初識山洞 在遠離人煙的深山之中&#xff0c;隱藏著一個鮮為人知的山洞。這個山洞名叫幽洞&#xff0c;它的名字在當地人的口中帶著一股說不出的詭異和神秘。據說&#xff0c;幽洞深不見底&#xff0c;里面充滿了未知的恐懼和危險。然而&#xff0c;對于好奇心…

Go微服務: Grpc服務注冊在Consul的示例(非Go-Micro)

概述 現在&#xff0c;我們使用consul客戶端的api來把GRPC服務實現注冊到consul上&#xff0c;非Go-Micro的形式其實&#xff0c;consul官方提供了對應的接口調用來實現&#xff0c;golang中的consul/api包對其進行了封裝我們使用consul/api來進行展示 目錄結構 gitee.com/g…

springboot+mysql在線考試系統-計算機畢業設計源碼82584

摘 要 信息化社會內需要與之針對性的信息獲取途徑&#xff0c;但是途徑的擴展基本上為人們所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人們經常能夠獲得不同類型信息&#xff0c;這也是技術最為難以攻克的課題。針對在線考試等問題&#xff0c;對如何通過計算…

Websocket助手

功能介紹 WS助手是WebSocket調試的開發工具&#xff0c;該客戶端工具可以幫助開發人員快速連接到測試/生產環境&#xff0c;它可以幫助您監視和分析 Websocket 消息&#xff0c;并在開發過程中解決問題&#xff1b;可以模擬客戶端實現與服務器的數據交互&#xff0c;并完成批量…

論文精讀:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face Status: Reading Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang Institution: 微軟亞洲研究院&#xff08;Microsoft Research Asia&#xff09;, 浙江…

uniapp 對接 微信App/支付寶App 支付

相關文檔&#xff1a;uni.requestPayment(OBJECT) | uni-app官網 示例代碼&#xff1a; import qs from qsasync aliPay(){const { provider } await uni.getProvider({ service:payment })if(provider.includes(alipay)){uni.request({url:后端接口地址,data:{ //傳參 },suc…

? 傳知代碼 ? 基于擴散模型的無載體圖像隱寫術

&#x1f49b;前情提要&#x1f49b; 本文是傳知代碼平臺中的相關前沿知識與技術的分享~ 接下來我們即將進入一個全新的空間&#xff0c;對技術有一個全新的視角~ 本文所涉及所有資源均在傳知代碼平臺可獲取 以下的內容一定會讓你對AI 賦能時代有一個顛覆性的認識哦&#x…

前端---閉包【防抖以及節流】----面試高頻!

1.什么閉包 釋放閉包 從以上看出&#xff1a;一般函數調用一次會把內部的數據進行清除--但是這種操作卻可以一起保留局部作用域的數據 // 優點:1、可以讀取函數內部的變量 2、讓這些變量始中存在局部作用域當中 2.閉包產生的兩種業務場景&#xff1a;防抖、節流 2.1防抖 舉…

QGraphicsView實現簡易地圖16『爆炸效果』

前文鏈接&#xff1a;QGraphicsView實現簡易地圖15『測量面積』 一種簡單的爆炸波擴散效果 動態演示效果&#xff1a; 靜態展示圖片&#xff1a; 核心代碼&#xff1a; #pragma once #include "../AbstractGeoItem.h" #include "DataStruct/GeoData.h"…

sysbench壓測mysql性能測試命令和報告

sysbench壓測mysql性能測試命令和報告 一、安裝sysbench工具二、創建測試數據庫三、基于sysbench構造測試表和測試數據四、數據庫性能測試1、數據庫讀寫性能測試2、數據庫讀性能測試3、數據庫刪除性能測試4、數據庫更新索引字段性能測5、數據庫更新非索引字段性能測試6、數據庫…

windows ip助手函數了解

根據手冊,winsock編程中提供的有一類函數叫ip助手函數;比如Ipconfig函數,從名字看應該是可自己編程實現類似ipconfig命令的功能; 剛看到一個示例,是MS提供的,也屬于這一類,代碼如下, #include <winsock2.h> #include <ws2tcpip.h> #include <iphlpapi…

C++ vector類

目錄 0.前言 1.vector介紹 2.vector使用 2.1 構造函數(Constructor) 2.1.1. 默認構造函數 (Default Constructor) 2.1.2 填充構造函數 (Fill Constructor) 2.1.3 范圍構造函數 (Range Constructor) 2.1.4 拷貝構造函數 (Copy Constructor) 2.2 迭代器(Iterator) 2.2.…

十、通配符和正則表達式

10.1 通配符 通配符是由shell處理的, 它只會出現在 命令的“參數”里。當shell在“參數”中遇到了通配符 時&#xff0c;shell會將其當作路徑或文件名去在磁盤上搜尋可能的匹配&#xff1a;若符合要求的匹配存在&#xff0c;則進 行代換(路徑擴展)&#xff1b;否則就將該通配…