微軟自動化測試工具palywright


前言

我們介紹許多e2e的自動化測試工具

一類是基於 Selenium 的測試框架:

  • robot framework
  • gauge
  • SeleniumBase
  • seldom(我自己維護的)

另一類是基於JS語言的測試工具:

  • cypress
  • puppeteer

前都本身就是基於Selenium的自動化測試工具,后者在測試人員這個圈子也是未能撼動Selenium的地位,我認為有兩個原因,一是Selenium是一個非常成熟的自動化測試工具,有大量的學習資料;另一方面selenium支持Python,沒錯Python以其簡單的語法已經成為了測試人員學習編程語言的不二之選。

好了,介紹個新的自動化測試工具還要鋪墊這么多?這是因為我看了palywright的文檔之后,覺得這工具大概率能在測試人員這個群體中流行起來。

playwright 介紹

官方:https://playwright.dev/

介紹

Playwright enables fast, reliable and capable automation across all modern browsers.

支持平台&瀏覽器

Linux macOS Windows
Chromium 89.0.4344.0
WebKit 14.1
Firefox 84.0b9

支持語言

從支持的平台、語言和瀏覽器來看,是不是有Selenium的味道。這是微軟爸爸的項目,從微軟這幾年擁抱開源的態度來看,這個工具應該會得到持續的支持。

安裝

不同的語言安裝方式不同,根據上面的鏈接,到對應的項目下面查看安裝方式。本文以Python為例。

安裝plywright

> pip install playwright

安裝瀏覽器

> python -m playwright install

Downloading chromium v827102 - 89.4 Mb [====================] 100% 0.0s
chromium v827102 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\chromium-827102
Downloading firefox v1205 - 74.9 Mb [====================] 100% 0.0s
firefox v1205 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\firefox-1205
Downloading webkit v1383 - 51.4 Mb [====================] 100% 0.0s
webkit v1383 downloaded to C:\Users\fnngj\AppData\Local\ms-playwright\webkit-1383

錄制腳本

plywright可以在瀏覽器中記錄用戶的互動並生成代碼。

執行命令

> python -m playwright codegen

視頻

接下來,對錄制的腳本做簡單的修飾。

from time import sleep
from playwright.sync_api import sync_playwright


def run(playwright):
    pw = playwright().start()
    browser = pw.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/")

    # Fill input[name="wd"]
    page.fill('input[name="wd"]', "playwright")

    # Click input[type="submit"]
    page.click('input[type="submit"]')

    sleep(2)

    # assert title
    assert page.title() == "playwright_百度搜索"
    # ---------------------
    context.close()
    browser.close()


if __name__ == '__main__':
    run(sync_playwright)

從API來看,和大多數自動化工具都差不多。

異步的寫法

playwright官方例子中給出的異步的寫法。 從它提供的API sync_playwright 的命名也可以看出,它很喜歡異步。

import asyncio
from playwright import async_playwright


async def main():
    async with async_playwright() as p:
        for browser_type in [p.chromium, p.firefox, p.webkit]:
            browser = await browser_type.launch(headless=False)
            page = await browser.newPage()
            await page.goto('https://www.baidu.com')
            await page.screenshot(path=f'example-{browser_type.name}.png')
            await browser.close()

asyncio.get_event_loop().run_until_complete(main())

后續:

  1. playwrigth 與其他自動化工具的比較
  2. playwright API介紹
  3. playwright 與單元測試框架unittest/pytest的使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM