自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

自動(dòng)化測試工具-Playwright(快速上手)

開發(fā) 開發(fā)工具
本篇將介紹另一款強(qiáng)大而易用的 UI 自動(dòng)化測試工具-Playwright。

1、前言

一提到 UI 自動(dòng)化測試工具,首要推薦的必屬是 Selenium,其優(yōu)勢在于跨平臺、跨語言、完全開源、對商業(yè)用戶也沒有任何限制、支持分布式、擁有成熟的社區(qū)與學(xué)習(xí)文檔等,目前已經(jīng)迭代更新到 4 版本。那么缺點(diǎn)也有,比如環(huán)境配置、加載效率低、運(yùn)行速度慢等。

除了 Selenium 就沒有別的工具推薦了嗎?當(dāng)然不是,還有很多優(yōu)秀的工具,比如 Cypress、Robot Framework 等。

本篇將介紹另一款強(qiáng)大而易用的 UI 自動(dòng)化測試工具-Playwright。

2、簡介

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

特點(diǎn):

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

2、跨平臺。在 Windows、Linux 和 macOS 上進(jìn)行本地或 CI、無頭或有頭測試。

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

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

官網(wǎng)地址:

https://playwright.dev。

GitHub地址:

https://github.com/microsoft/playwright。

3、安裝

Playwright 支持跨語言,本篇將以 Python 進(jìn)行講解。

首先要安裝 Python(有 Python 環(huán)境)。

之后打開命令行,輸入安裝命令即可。

pip install --upgrade pip
pip install playwright
playwright install

4、交互模式

Playwright 支持交互模式,即運(yùn)行單行代碼或者代碼塊,能立即給出運(yùn)行結(jié)果。

由于 Playwright 支持同步和異步的 API,那么應(yīng)先了解一下什么是同步和異步?

同步,可以理解為在執(zhí)行完一個(gè)函數(shù)或方法之后,一直等待系統(tǒng)返回值或消息,這時(shí)程序是出于阻塞的,只有接收到返回的值或消息后才往下執(zhí)行其他的命令。

異步,執(zhí)行完函數(shù)或方法后,不必阻塞性地等待返回值或消息,只需要向系統(tǒng)委托一個(gè)異步過程,那么當(dāng)系統(tǒng)接收到返回值或消息時(shí),系統(tǒng)會自動(dòng)觸發(fā)委托的異步過程,從而完成一個(gè)完整的流程。

下面以操作打開瀏覽器,訪問百度首頁,關(guān)閉瀏覽器為例。

(1)同步命令

打開命令行,輸入 python。

進(jìn)入到 Python 交互模式中,輸入如下命令:

from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
browser = playwright.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://www.baidu.com/")
browser.close()
playwright.stop()

輸入訪問百度首頁命令,瀏覽器頁面會同時(shí)跳轉(zhuǎn)到百度首頁,同時(shí)命令行輸出響應(yīng)與請求的信息。

圖片

(2)異步命令

打開命令行,輸入 python -m asyncio。

進(jìn)入到 Python 交互模式中,輸入如下命令:

from playwright.async_api import async_playwright
playwright = await async_playwright().start()
browser = await playwright.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto("https://www.baidu.com/")
await browser.close()
await playwright.stop()

輸入訪問百度首頁命令,瀏覽器頁面也會同時(shí)跳轉(zhuǎn)到百度首頁,命令行也會輸出響應(yīng)與請求的信息。

圖片

5、錄制模式

Playwright 帶有命令行工具(錄制功能),可用于記錄用戶交互并生成代碼(Java、Python等)。其實(shí)就是類似于 Selenium IDE。

(1)常規(guī)錄制

打開命令行,輸入:

playwright codegen baidu.com

自動(dòng)打開瀏覽器,并跳轉(zhuǎn)到百度首頁。

圖片

同時(shí)也彈出錄制窗口,可以看到是錄制中,腳本語言為 Python。

圖片

通過操作(點(diǎn)擊、輸入等)瀏覽器頁面,腳本也會自動(dòng)增加操作的步驟。

圖片

此外,錄制工具還可以獲取元素的定位。點(diǎn)擊停止錄制,之后再點(diǎn)擊 Explore 后,在頁面點(diǎn)擊想要定位的元素,即可獲取到該元素定位的值。

圖片

最后將錄制的腳本復(fù)制出來,可做適當(dāng)?shù)恼{(diào)整。

調(diào)整后的腳本代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
# Open new page
page = context.new_page()
# Go to https://www.baidu.com/
page.goto("https://www.baidu.com/")
# Click input[name="wd"]
page.locator("input[name=\"wd\"]").click()
# Fill input[name="wd"]
page.locator("input[name=\"wd\"]").fill("自動(dòng)化測試")
# Click text=百度一下
page.locator("text=百度一下").click()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)

(2)模擬移動(dòng)設(shè)備錄制

open 可以模擬移動(dòng)設(shè)備和平板設(shè)備。

例如模擬 iPhone 13 訪問作者的 CSDN。

playwright open --device="iPhone 13" blog.csdn.net/wangmcn

如圖:模擬 iPhone 13 打開瀏覽器的效果。

圖片

6、編寫模式

使用 IDE(如 PyCharm、Visual Studio Code 等) 進(jìn)行編寫代碼并運(yùn)行程序。

(1)啟動(dòng)瀏覽器(無頭模式)

Playwright 可以啟動(dòng)三種瀏覽器中的 chromium、firefox、webkit 任何一種。

示例操作如下,打開瀏覽器、跳轉(zhuǎn)百度、屏幕截圖、輸出頁面標(biāo)題、關(guān)閉瀏覽器。

腳本代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.baidu.com/")
page.screenshot(path="example.png")
print(page.title())
browser.close()

運(yùn)行結(jié)果:控制臺輸出頁面標(biāo)題。

圖片

(2)啟動(dòng)瀏覽器(有頭模式)

默認(rèn)情況下,Playwright 以無頭模式運(yùn)行瀏覽器。要查看瀏覽器 UI(有頭模式),請?jiān)趩?dòng)瀏覽器時(shí)傳遞 headless=False 標(biāo)志,還可以使用 slow_mo 來減慢執(zhí)行速度。

腳本代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False, slow_mo=50)
page = browser.new_page()
page.goto("https://www.baidu.com/")
page.screenshot(path="example.png")
print(page.title())
browser.close()

(3)異步

Playwright 支持 API 的兩種變體:同步和異步。

支持異步,如果你的項(xiàng)目使用 asyncio,則應(yīng)該使用 async API。

腳本代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公眾號:AllTests軟件測試
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
await page.goto("https://www.baidu.com/")
print(await page.title())
await browser.close()

asyncio.run(main())
責(zé)任編輯:姜華 來源: AllTests軟件測試
相關(guān)推薦

2012-12-24 22:54:31

2014-11-12 09:24:00

2011-05-30 17:50:23

分布式測試

2011-05-31 18:17:07

分布式測試

2022-08-08 07:35:37

云測試工具云存儲云計(jì)算

2009-07-06 10:08:03

Flex自動(dòng)化

2011-11-18 09:11:21

Web

2010-08-10 14:34:37

QTPFlex

2015-04-15 13:30:54

2011-06-08 17:15:46

QTP腳本

2010-08-10 14:25:42

SilkTestFlex

2021-12-17 10:01:52

人工智能測試工具

2022-06-02 09:00:00

人工智能工具自動(dòng)化測試

2010-08-10 14:18:15

RationalFunFlex

2022-12-04 23:52:11

iOS自動(dòng)化工具

2019-01-23 09:00:00

2020-08-07 08:10:25

開源技術(shù) 工具

2012-09-17 13:21:22

iOSAndroid自動(dòng)化測試工具

2016-11-11 14:34:46

開源開源工具

2020-04-09 13:16:48

自動(dòng)化工具腳本
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號