国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁 > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

PlayWright新手全攻略:從入門到精通

0
分享至

01、簡(jiǎn)介

軟開源自動(dòng)化測(cè)試工具Playwright,支持主流瀏覽器,包括:Chrome、Firefox、Safari 等,同時(shí)支持以無頭模式、有頭模式運(yùn)行,并提供了同步、異步的 API,可以結(jié)合主流測(cè)試框架使用,并且支持瀏覽器端的自動(dòng)化腳本錄制等功能。



特點(diǎn):

· 跨瀏覽器:Playwright 支持所有現(xiàn)代渲染引擎,包括Chromium、WebKit 和 Firefox;

· 跨平臺(tái):在 Windows、Linux 和 MacOS 上進(jìn)行本地或 CI、無頭或有頭測(cè)試;

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

· 測(cè)試移動(dòng)網(wǎng)絡(luò):適用于 Android 和 Mobile Safari 的 Google Chrome 原生移動(dòng)仿真。相同的渲染引擎適用于您的桌面和云端。

通俗的講: 就是一款主流的自動(dòng)化測(cè)試工具,可以跨平臺(tái)、跨語言、開源、支持分布式、擁有成熟的社區(qū)及學(xué)習(xí)文檔,主要用于接口和web自動(dòng)化測(cè)試。



02、安裝

1.Java 開發(fā)環(huán)境搭建

首先需要明確的是Java環(huán)境是使用maven管理項(xiàng)目的,所以我們只需用在項(xiàng)目中找到對(duì)應(yīng)的pom文件在其中添加如下內(nèi)容:

com.microsoft.playwright

playwright

1.25.0

就可以自動(dòng)導(dǎo)入playwright。

Ps:因?yàn)閙aven的中央倉庫是外網(wǎng)地址,下載很慢需耐心等待,或者在修改鏡像站,改為國(guó)內(nèi)鏡像。

添加demo.java內(nèi)容如下:

package org.example;import com.microsoft.playwright.*;publicclassExample{publicstaticvoidmain(String[] args){try (Playwright playwright = Playwright.create()) {Browser browser = playwright.chromium().launch();Page page = browser.newPage(); page.navigate("https://www.cnblogs.com/longronglang"); System.out.println(page.title());}}}

運(yùn)行這個(gè)類之后會(huì)下載下載 Playwright 包并安裝適用于 Chromium、Firefox 和 WebKit 的瀏覽器二進(jìn)制文件,如下所示:

2.Python開發(fā)環(huán)境搭建(網(wǎng)上教程很多此處不做過多說明)

1. 安裝Playwright依賴庫(Playwright支持Async\Await語法,故需要Python3.7+)

pip install playwright

2. 安裝Chromium、Firefox、WebKit等瀏覽器的驅(qū)動(dòng)文件(內(nèi)置瀏覽器)

python -m playwright install

03、腳本錄制

此章主要是介紹如何錄制腳本,提供給需要使用錄制屏幕的人,若是不喜歡覺得自己手寫更方便的同學(xué)可以跳過此章。

1.錄制環(huán)境安裝

如同常見的自動(dòng)化測(cè)試工具一樣,playwright同樣支持屏幕錄制并生成腳本。因?yàn)殇浧習(xí)r需要node環(huán)境,所以請(qǐng)?zhí)崆鞍惭b。不會(huì)的同學(xué)請(qǐng)自行度娘,本文不做詳述。

確認(rèn)node環(huán)境及版本:

node -v



安裝:

npm init -y

npm i -D @playwright/test



2.錄制

錄制是不需要寫代碼的,只需要啟動(dòng)瀏覽器,playwright就會(huì)幫我們生成腳本代碼。

輸入如下命令即可啟動(dòng),開啟錄制模式:

npx playwright codegen https://www.baidu.com(開啟錄屏模式)

Npx playwright open --viewport-size 1920,1080 https://www.baidu.com

Ps: 上文中的url 是我們需要錄制的網(wǎng)站地址,請(qǐng)根據(jù)實(shí)際使用情況自行配置。



同樣playwright是支持多語言的,我們可以在錄制界面隨意切換自己需要的語言,本文以Java為例,其余不做演示。



接下來我們只需要在瀏覽器中執(zhí)行相關(guān)操作,playwright就會(huì)把我們所有的操作記錄下來。

下圖中為在首頁的輸入框中輸入playwright并查詢。



當(dāng)操作完成之后,我們點(diǎn)擊playwright的停止和復(fù)制就可以得到錄制好的腳本



我們把復(fù)制好的腳本粘貼到編輯器中,點(diǎn)擊運(yùn)行該腳本,通過運(yùn)行后就證明我們錄制的腳本沒有問題,可以保存。如果有,則通過調(diào)整代碼或者推倒重新錄制即可解決。

至此錄制環(huán)境安裝和腳本錄制完成。

3.調(diào)試

如圖是playwright inspectior,我們已經(jīng)和它見過一次面了,大家應(yīng)該也不陌生。接下來詳細(xì)的為大家介紹一下它,它叫playwright inspectior是playwright框架自帶的GUI工具,可以幫助我們調(diào)試腳本



3.1 如何啟動(dòng)playwright inspectior

在腳本中添加page.pause()方法即可啟動(dòng).



Ps: 其他方法本文不做推薦,后期請(qǐng)自行研究。

3.2. 界面介紹

(1)工具欄介紹



(2)元素欄介紹

如圖所示,當(dāng)我們不確定頁面某個(gè)元素位置怎么獲取時(shí),可點(diǎn)擊檢測(cè)器,然后在頁面上點(diǎn)擊該元素,即可在輸入框中展示該元素。

也可以配合開發(fā)者小工具(F12)檢測(cè)你的元素否正確。



3.3. 如何調(diào)試

當(dāng)腳本出現(xiàn)問題之后,我們就可以使用playwright inspectior做調(diào)試

第一步:在你的腳本代碼中添加page.pause()方法,運(yùn)行腳本。

第二步:等待playwright inspectior成功啟動(dòng)之后,我們就能使用工具欄 播放、停止、逐步播放來確定問題所在

第三步:當(dāng)確定時(shí)元素位置錯(cuò)誤,我們就能使用元素檢查器來確定正確的元素位置。

04、常用方法介紹

1.創(chuàng)建瀏覽器對(duì)象



.chromium().launch()方法就是指創(chuàng)建一個(gè)谷歌瀏覽器,同樣創(chuàng)建火狐就是.firefox().launch()

.setHeadless(false)方法是指在創(chuàng)建瀏覽器的時(shí)候,選擇無頭瀏覽器(true)還是帶頭瀏覽器(false)。

無頭瀏覽器:后臺(tái)運(yùn)行,不在顯示器顯示腳本操作

有頭瀏覽器:在顯示器上展示腳本所有操作

2.創(chuàng)建瀏覽器上下文

瀏覽器上下文對(duì)象是瀏覽器實(shí)例中一個(gè)類似于隱身模式的會(huì)話,簡(jiǎn)單說就是該上下文資源是完全獨(dú)立的,與其他的上下文互不干擾,所以在自動(dòng)化測(cè)試中,可以對(duì)每一個(gè)測(cè)試用例都單獨(dú)開一個(gè)瀏覽器上下文。這對(duì)于多用戶,多場(chǎng)景的測(cè)試非常有用。

3.創(chuàng)建頁面

page就是瀏覽器中的標(biāo)簽頁,一個(gè)page對(duì)象就可以當(dāng)前頁面內(nèi)容交互



??轉(zhuǎn)崗軟件測(cè)試/野路子技能提升

??想了解更多漲薪技能提升方法

??可以到我的個(gè)人號(hào):atstudy-js

即可加入領(lǐng)取 ??????

轉(zhuǎn)行、入門、提升、需要的各種干貨資料

內(nèi)含AI測(cè)試、 車載測(cè)試、AI大模型開發(fā)、BI數(shù)據(jù)分析、銀行測(cè)試、游戲測(cè)試、AIGC

4.常見頁面操作事件

這部分主要演示的常見頁面操作,例如:文本輸入、點(diǎn)擊、鍵盤鍵入、上傳文件、聚焦等等

1、輸入操作

語法:Locator.fill(value)

使用場(chǎng)景:文本框、日期/時(shí)間、日歷控件等輸入框

page.locator("#kw").fill("playwright");

2、點(diǎn)擊操作

語法:Locator.click()

適用場(chǎng)景:?jiǎn)芜x框、復(fù)選框、按鈕控件、常見可點(diǎn)擊控件等等!

page.locator("#kw").click();

3、單選框及復(fù)選框操作

語法: Locator.setChecked(checked)

適用場(chǎng)景: 單選框、復(fù)選框

//單選款 (選中,已選中狀態(tài)下無效) page.locator(".Volvo").setChecked(true);page.locator(".Volvo").check();System.out.println(page.locator(".Volvo").isChecked());//復(fù)選框(選中,已選中狀態(tài)下無效) page.locator("#checkbox [type='checkbox']:nth-child(7)").check();page.locator("#checkbox [type='checkbox']:nth-child(7)").setChecked(true);

4、下拉控件操作

語法:Locator.selectOption(values[, options])

適用場(chǎng)景:下拉框操作

//通過value值選擇page.locator("[name='select']").selectOption("opel");//通過可見文本選擇page.locator("[name='select']").selectOption(new SelectOption().setLabel("Audi"));5、鼠標(biāo)事件

5、鼠標(biāo)事件

語法:詳見案例

適用場(chǎng)景:常見鼠標(biāo)點(diǎn)擊事件

//常規(guī)單擊page.locator("#mouse2").click();//雙擊page.locator("#mouse3").dblclick();//右鍵單擊page.locator("#mouse5").click(new Locator.ClickOptions().setButton(MouseButton.RIGHT));//按住Shift鍵并單擊page.locator("#mouse2").click(new Locator.ClickOptions().setModifiers(Arrays.asList(KeyboardModifier.SHIFT)));//懸停在元素上page.locator("#mouse1").hover();//單擊左上角page.locator("#mouse1").click(new Locator.ClickOptions().setPosition(0, 0));//強(qiáng)制點(diǎn)擊page.locator("#mouse2").click(new Locator.ClickOptions().setForce(true));//調(diào)度點(diǎn)擊事件來觸發(fā)點(diǎn)擊page.locator("#mouse2").dispatchEvent("click");

6、模擬鍵盤輸入字符操作

語法:Locator.type(value)

使用場(chǎng)景:模擬鍵盤輸入字符

ps:大多數(shù)時(shí)候,Page.fill()可以滿足要求。如不能輸入時(shí),可以考慮鍵入字符操作。

page.locator("#user").type("playwright");

7、單元素鍵盤事件操作

語法:Locator.press(鍵盤事件)

使用場(chǎng)景:定位元素并產(chǎn)生單個(gè)鍵盤事件

//模擬Ctrl+A 全選操作page.locator("#user").press("Control+A");//模擬回車操作 == > 跳轉(zhuǎn)到百度頁面page.locator(".baidu").press("Enter");

8、上傳文件

語法:Locator.setInputFiles()

使用場(chǎng)景:上傳一個(gè)或多個(gè)文件

//上傳一個(gè)文件page.locator("#load").setInputFiles(Paths.get("demo.md"));// 上傳多個(gè)文件page.locator("#load").setInputFiles(new Path[]{Paths.get("pom.xml"), Paths.get("demo.md")});

9、拖拽操作

語法:Locator.dragTo()

使用場(chǎng)景:常見元素拖動(dòng)操作

// 拖拽元素page.locator("#A").dragTo(page.locator(".container ul:nth-of-type(2)"));

10、懸浮操作

語法:Locator.hover()

使用場(chǎng)景:常見元素懸浮操作

//懸浮page.locator("#action").hover();

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關(guān)推薦
熱點(diǎn)推薦
劉德華回應(yīng)摯友潘宏彬去世,最后一面未見難掩悲傷,拒談喪禮細(xì)節(jié)

劉德華回應(yīng)摯友潘宏彬去世,最后一面未見難掩悲傷,拒談喪禮細(xì)節(jié)

螃蟹吃瓜攤
2026-04-18 20:50:40
中超無扣分積分榜:成都第一申花第二,天津首勝后升至第13

中超無扣分積分榜:成都第一申花第二,天津首勝后升至第13

懂球帝
2026-04-18 22:15:11
廣東慘遭18分逆轉(zhuǎn)疑似放水!專家暗示打假球:杜鋒為季后賽挑對(duì)手

廣東慘遭18分逆轉(zhuǎn)疑似放水!專家暗示打假球:杜鋒為季后賽挑對(duì)手

籃球快餐車
2026-04-19 06:11:53
硬碰硬了,日本戰(zhàn)艦橫穿臺(tái)海第2天,東部戰(zhàn)區(qū)立馬開始行動(dòng)了!

硬碰硬了,日本戰(zhàn)艦橫穿臺(tái)海第2天,東部戰(zhàn)區(qū)立馬開始行動(dòng)了!

阿龍聊軍事
2026-04-19 08:49:55
男子爬上泰山“五岳獨(dú)尊”石刻拍照,景區(qū):將核查其身份進(jìn)行處理

男子爬上泰山“五岳獨(dú)尊”石刻拍照,景區(qū):將核查其身份進(jìn)行處理

揚(yáng)子晚報(bào)
2026-04-17 12:09:40
零跑D19,朱江明的生死賭局!

零跑D19,朱江明的生死賭局!

病毒營(yíng)銷陳軒
2026-04-17 21:25:49
公開認(rèn)罪后,人民日?qǐng)?bào)對(duì)許家印稱呼變了,11字之差釋放信號(hào)不尋常

公開認(rèn)罪后,人民日?qǐng)?bào)對(duì)許家印稱呼變了,11字之差釋放信號(hào)不尋常

北緯的咖啡豆
2026-04-18 16:49:49
廣東為何遭逆轉(zhuǎn)?媒體人:杜鋒主動(dòng)選落位,球迷:第五名可多賺錢

廣東為何遭逆轉(zhuǎn)?媒體人:杜鋒主動(dòng)選落位,球迷:第五名可多賺錢

南海浪花
2026-04-19 00:32:41
斯諾克世錦賽:中國(guó)雙星不敗!趙心童創(chuàng)紀(jì)錄,張安達(dá)2-2暫平名將

斯諾克世錦賽:中國(guó)雙星不??!趙心童創(chuàng)紀(jì)錄,張安達(dá)2-2暫平名將

劉姚堯的文字城堡
2026-04-18 19:12:24
許家印被捕細(xì)節(jié)公開保交樓會(huì)議設(shè)伏抓捕反抗激烈被摘皮帶戴手銬

許家印被捕細(xì)節(jié)公開保交樓會(huì)議設(shè)伏抓捕反抗激烈被摘皮帶戴手銬

深度報(bào)
2026-04-18 23:28:19
234萬平方公里大國(guó),海岸線僅37公里:準(zhǔn)內(nèi)陸國(guó)到底有多憋屈

234萬平方公里大國(guó),海岸線僅37公里:準(zhǔn)內(nèi)陸國(guó)到底有多憋屈

兔斯基聊科學(xué)
2026-04-18 10:45:36
日本敢與中國(guó)叫板的三張底牌:家底、海底、臥底

日本敢與中國(guó)叫板的三張底牌:家底、海底、臥底

孝沛與世界
2026-04-18 02:02:26
4月21日油價(jià)調(diào)整!不是近5毛,別被忽悠

4月21日油價(jià)調(diào)整!不是近5毛,別被忽悠

沙雕小琳琳
2026-04-18 20:41:21
杜蘭特傷停,火箭VS湖人G1首發(fā)陣容出爐,東契奇?zhèn)鱽砗孟?>
    </a>
        <h3>
      <a href=世界體育圈
2026-04-19 08:40:43
辭去央視鐵飯碗,帶著兒子嫁給張譯,20年過去,才知道她有多明智

辭去央視鐵飯碗,帶著兒子嫁給張譯,20年過去,才知道她有多明智

秋姐居
2026-04-18 22:04:49
荷蘭政府花200億挽留無效,光刻機(jī)巨頭ASML為何執(zhí)意從老家搬走?

荷蘭政府花200億挽留無效,光刻機(jī)巨頭ASML為何執(zhí)意從老家搬走?

普陀動(dòng)物世界
2026-04-18 00:30:08
“五一”假期大批航班取消

“五一”假期大批航班取消

每日經(jīng)濟(jì)新聞
2026-04-18 22:20:39
梁文鋒,扛不住了

梁文鋒,扛不住了

邱處機(jī)
2026-04-18 16:03:02
不建議有司機(jī)大老板買小米!雷軍回應(yīng)小米YU7二排比邁巴赫多一度:沒有詆毀 但確實(shí)多

不建議有司機(jī)大老板買小米!雷軍回應(yīng)小米YU7二排比邁巴赫多一度:沒有詆毀 但確實(shí)多

快科技
2026-04-18 10:12:12
預(yù)售價(jià)近40萬元的小鵬,把所有人都忽悠了!

預(yù)售價(jià)近40萬元的小鵬,把所有人都忽悠了!

新浪財(cái)經(jīng)
2026-04-19 02:52:50
2026-04-19 11:32:49
51Testing軟件測(cè)試網(wǎng) incentive-icons
51Testing軟件測(cè)試網(wǎng)
中國(guó)軟件測(cè)試人的精神家園
1558文章數(shù) 13260關(guān)注度
往期回顧 全部

科技要聞

50分26秒!榮耀獲得人形機(jī)器人半馬冠軍

頭條要聞

牛彈琴:伊朗遭到特朗普"羞辱"被激怒 結(jié)果印度遭了殃

頭條要聞

牛彈琴:伊朗遭到特朗普"羞辱"被激怒 結(jié)果印度遭了殃

體育要聞

掘金擒狼開門紅:五花肉與小辣椒

娛樂要聞

劉德華回應(yīng)潘宏彬去世,拒談喪禮細(xì)節(jié)

財(cái)經(jīng)要聞

華誼兄弟,8年虧光85億

汽車要聞

29分鐘大定破萬 極氪8X為什么這么多人買?

態(tài)度原創(chuàng)

藝術(shù)
家居
本地
時(shí)尚
公開課

藝術(shù)要聞

鄭麗文大陸之行引發(fā)熱議,孫中山贈(zèng)對(duì)聯(lián)成焦點(diǎn)!

家居要聞

法式線條 時(shí)光靜淌

本地新聞

12噸巧克力有難,全網(wǎng)化身超級(jí)偵探添亂

選對(duì)發(fā)型,真的能少走很多變美彎路

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進(jìn)入關(guān)懷版