Python playwright學(xué)習(xí)之自動(dòng)錄制生成腳本
前言
playwright 可以支持自動(dòng)錄制生成腳本,也就是說(shuō)只需要在頁(yè)面上點(diǎn)點(diǎn)點(diǎn),就可以自動(dòng)生成對(duì)應(yīng)的腳本了。
啟動(dòng)運(yùn)行
Playwright 具有開(kāi)箱即用的生成測(cè)試的能力,是快速開(kāi)始測(cè)試的好方法。它將打開(kāi)兩個(gè)窗口,一個(gè)是瀏覽器窗口,您可以在其中與要測(cè)試的網(wǎng)站進(jìn)行交互,另一個(gè)是 Playwright Inspector 窗口,您可以在其中記錄測(cè)試、復(fù)制測(cè)試、清除測(cè)試以及更改測(cè)試語(yǔ)言。
使用命令行啟動(dòng)
playwright codegen http://網(wǎng)站地址
啟動(dòng)后,電腦上出現(xiàn)2個(gè)窗口,左邊是瀏覽器打開(kāi)網(wǎng)站可以操作,右邊是inspector 可以生成對(duì)應(yīng)的腳本

登錄框輸入賬號(hào)和密碼點(diǎn)登錄為例

一個(gè)完整的登錄流程代碼生成如下
from playwright.sync_api import Playwright, sync_playwright, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("http://127.0.0.1:8000/login.html")
page.get_by_placeholder("請(qǐng)輸入用戶名").click()
page.get_by_placeholder("請(qǐng)輸入用戶名").fill("yoyo")
page.get_by_placeholder("請(qǐng)輸入密碼").click()
page.get_by_placeholder("請(qǐng)輸入密碼").fill("aa123456")
page.get_by_role("button", name="立即登錄 >").click()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
還可以選擇生成異步代碼

如果你是寫(xiě)自動(dòng)化測(cè)試用例,還能自動(dòng)生成 pytest 框架的代碼,簡(jiǎn)直了!

from playwright.sync_api import Page, expect
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/
def test_example(page: Page) -> None:
page.goto("http://127.0.0.1:8000/login.html")
page.get_by_placeholder("請(qǐng)輸入用戶名").click()
page.get_by_placeholder("請(qǐng)輸入用戶名").fill("yoyo")
page.get_by_placeholder("請(qǐng)輸入密碼").click()
page.get_by_placeholder("請(qǐng)輸入密碼").fill("aa123456")
page.get_by_role("button", name="立即登錄 >").click()錄制相關(guān)命令操作
相關(guān)命令參數(shù):
1.codegen在瀏覽器中運(yùn)行并執(zhí)行操作
playwright codegen playwright.dev
2.Playwright 打開(kāi)一個(gè)瀏覽器窗口,其視口設(shè)置為特定的寬度和高度,并且沒(méi)有響應(yīng),因?yàn)樾枰谙嗤瑮l件下運(yùn)行測(cè)試。
使用該–viewport選項(xiàng)生成具有不同視口大小的測(cè)試。
playwright codegen --viewport-size=800,600 playwright.dev
3.--device 使用設(shè)置視口大小和用戶代理等選項(xiàng)模擬移動(dòng)設(shè)備時(shí)記錄腳本和測(cè)試。
模擬移動(dòng)設(shè)備iPhone11,注意:device的值必須用雙引號(hào),并且區(qū)分大小寫(xiě)
playwright codegen --device="iPhone 11" playwright.dev
4.模擬配色
playwright codegen --color-scheme=dark playwright.dev
5.模擬地理位置、語(yǔ)言和時(shí)區(qū)
playwright codegen --timezone="Europe/Rome" --geolocation="41.890221,12.492348" --lang="it-IT" maps.google.com
6.保留經(jīng)過(guò)身份驗(yàn)證的狀態(tài)
運(yùn)行codegen以在會(huì)話結(jié)束時(shí)–save-storage保存cookie和localStorage 。這對(duì)于單獨(dú)記錄身份驗(yàn)證步驟并在稍后的測(cè)試中重用它很有用。
執(zhí)行身份驗(yàn)證并關(guān)閉瀏覽器后,auth.json將包含存儲(chǔ)狀態(tài)。
playwright codegen --save-storage=auth.json
運(yùn)行–load-storage以消耗先前加載的存儲(chǔ)。這樣,所有的cookie和localStorage都將被恢復(fù),使大多數(shù)網(wǎng)絡(luò)應(yīng)用程序進(jìn)入身份驗(yàn)證狀態(tài)。
playwright open --load-storage=auth.json my.web.app playwright codegen --load-storage=auth.json my.web.app # Perform actions in authenticated state.
page.pause() 斷點(diǎn)調(diào)試
如果您想在某些非標(biāo)準(zhǔn)設(shè)置中使用 codegen(例如,使用browser_context.route()),可以調(diào)用page.pause(),這將打開(kāi)一個(gè)帶有 codegen 控件的單獨(dú)窗口。
from playwright.sync_api import sync_playwright
with 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 options
context.route('**/*', lambda route: route.continue_())
# Pause the page, and start recording manually.
page = context.new_page()
page.pause()
到此這篇關(guān)于Python playwright學(xué)習(xí)之自動(dòng)錄制生成腳本的文章就介紹到這了,更多相關(guān)Python playwright自動(dòng)錄制生成腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用grequests(gevent+requests)并發(fā)發(fā)送請(qǐng)求過(guò)程解析
這篇文章主要介紹了Python使用grequests并發(fā)發(fā)送請(qǐng)求過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python?flask?sqlalchemy的簡(jiǎn)單使用及常用操作
這篇文章主要介紹了Python?flask?sqlalchemy的簡(jiǎn)單使用及常用操作,在python中,常用的ORM工具就是sqlalchemy了。下面就以一個(gè)簡(jiǎn)單的flask例子來(lái)說(shuō)明吧,需要的小伙伴可以參考一下2022-08-08
利用PyCharm Profile分析異步爬蟲(chóng)效率詳解
這篇文章主要給大家介紹了關(guān)于如何利用PyCharm Profile分析異步爬蟲(chóng)效率的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PyCharm具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
詳解解Django 多對(duì)多表關(guān)系的三種創(chuàng)建方式
本文主要介紹了詳解解Django 多對(duì)多表關(guān)系的三種創(chuàng)建方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
使用scipy.optimize的fsolve,root函數(shù)求解非線性方程問(wèn)題
這篇文章主要介紹了使用scipy.optimize的fsolve,root函數(shù)求解非線性方程問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

