1. 程式人生 > 其它 >Playwright-錄製指令碼進行自動化測試

Playwright-錄製指令碼進行自動化測試

一、簡介

公司最近準備用flutter來寫web端頁面,需要做ui自動化測試,由於flutter的頁面元素無法定位,不能用selenium+unittest的方法進行,只能尋求其它的自動化方法,這時發現flutter錄製指令碼可以錄製操作,然後自動生成指令碼檔案,然後執行指令碼檔案就可以實現了。

Playwright是微軟推出來的一款自動化測試工具

官方:https://playwright.dev/

介紹

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

支援平臺&瀏覽器

LinuxmacOSWindows
Chromium 89.0.4344.0
WebKit 14.1
Firefox 84.0b9

支援語言

二、安裝

第 1 步,安裝playwright-python

 pip install playwright

第 2 步,安裝的瀏覽器驅動,會將 Chromeium、Firefox、Webkit 瀏覽器驅動下載到本地

python -m playwright install

安裝完成後,可以檢視課時使用的命令

python -m playwright help
C:\Users\Administrator>python -m playwright help
Usage: npx playwright [options] [command]

Options:
  -V, --version                          output the version number
  
-h, --help display help for command Commands: open [options] [url] open page in browser specified via -b, --browser codegen [options] [url] open page and generate code for user ac tions debug <app> [args...] run command in debug mode: disable time out, open inspector install [browser...] ensure browsers necessary for this vers ion of Playwright are installed install-deps [browser...] install dependencies necessary to run b rowsers (will ask for sudo permissions) cr [options] [url] open page in Chromium ff [options] [url] open page in Firefox wk [options] [url] open page in WebKit screenshot [options] <url> <filename> capture a page screenshot pdf [options] <url> <filename> save page as pdf show-trace [options] [trace] Show trace viewer help [command] display help for command

三、錄製指令碼

  • python -m playwright codegen 錄製指令碼
  • –help 幫助文件
  • -o 生成自動化指令碼的目錄(檔案預設生成的地址為你cmd執行命令的地址,也可以在命令中輸入需要儲存的地址)
  • –target 指令碼語言,包含 JS 和 Python,分別對應值為:python 和 javascript
  • -b 指定瀏覽器驅動

在cmd中執行:

python -m playwright codegen --target python -o test.py -b chromium https://www.baidu.com

命令執行後會自動開啟瀏覽器,同時會開啟一個Inspector ,所有的操作都會自動生成指令碼顯示在Inspector 裡面,關閉瀏覽器這是指令碼會自動儲存

可以檢視儲存的py檔案

 1 from playwright.sync_api import Playwright, sync_playwright
 2 
 3 
 4 def run(playwright: Playwright) -> None:
 5     browser = playwright.chromium.launch(headless=False)
 6     context = browser.new_context()
 7 
 8     # Open new page
 9     page = context.new_page()
10 
11     # Go to https://www.baidu.com/
12     page.goto("https://www.baidu.com/")
13 
14     # Click input[name="wd"]
15     page.click("input[name=\"wd\"]")
16 
17     # Fill input[name="wd"]
18     page.fill("input[name=\"wd\"]", "測試")
19 
20     # Press Enter
21     # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%B5%8B%E8%AF%95&fenlei=256&rsv_pq=e29e95d200057ece&rsv_t=6332vNWuKAWk0z%2Be3iFDs%2Fy16SkgQUYh7xVJHgu6DzflmHOv%2F4n2clPFJwY&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E6%25B5%258B%25E8%25AF%2595&rsp=5&inputT=868&rsv_sug4=1743&rsv_jmp=fail"):
22     with page.expect_navigation():
23         page.press("input[name=\"wd\"]", "Enter")
24     # assert page.url == "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E6%B5%8B%E8%AF%95&fenlei=256&rsv_pq=e29e95d200057ece&rsv_t=6332vNWuKAWk0z%2Be3iFDs%2Fy16SkgQUYh7xVJHgu6DzflmHOv%2F4n2clPFJwY&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E6%25B5%258B%25E8%25AF%2595&rsp=5&inputT=868&rsv_sug4=1743"
25 
26     # Close page
27     page.close()
28 
29     # ---------------------
30     context.close()
31     browser.close()
32 
33 
34 with sync_playwright() as playwright:
35     run(playwright)

同時還支援同步和非同步的操作