一、簡介
公司最近准備用flutter來寫web端頁面,需要做ui自動化測試,由於flutter的頁面元素無法定位,不能用selenium+unittest的方法進行,只能尋求其它的自動化方法,這時發現flutter錄制腳本可以錄制操作,然后自動生成腳本文件,然后運行腳本文件就可以實現了。
Playwright是微軟推出來的一款自動化測試工具
介紹
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 | ✅ | ✅ | ✅ |
支持語言
- JavaScript and TypeScript: https://github.com/microsoft/playwright
- Java: https://github.com/microsoft/playwright-java
- Python: https://github.com/microsoft/playwright-python
- C#: https://github.com/microsoft/playwright-sharp
二、安裝
第 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)
同時還支持同步和異步的操作