免费微网站_自助建站,十大app排行榜,深圳公司注册资金实缴要求,怎么看wordpress数据库位置最近#xff0c;微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器#xff0c;包含#xff1a;Chrome、Firefox、Safari、Microsoft Edge 等#xff0c;同时支持以无头模式、有头模式运行#xff0c;并提供了同步、异步的 API#xff0c;可以结…最近微软开源了一个非常强大的自动化项目叫 playwright-python 它支持主流的浏览器包含Chrome、Firefox、Safari、Microsoft Edge 等同时支持以无头模式、有头模式运行并提供了同步、异步的 API可以结合 Pytest 测试框架 使用并且支持浏览器端的自动化脚本录制。
项目地址https://github.com/microsoft/playwright-python
而对于Python爱好者来说还有一个更大的福利这个项目是针对Python语言的纯自动化工具可以做到连一行代码都不用写就能实现自动化功能。听起来简直太碉堡了
可能你会觉得有点不可思议真的不用写一行代码吗但它真的就是这么厉害。下面我们一起看下这个神器。
1、Playwright介绍
Playwright是一个强大的Python库仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作并同时支持以无头模式、有头模式运行。
Playwright提供的自动化技术是绿色的、功能强大、可靠且快速支持Linux、Mac以及Windows操作系统。 官网https://playwright.dev/ 从官网的解释官方给Playwright定位是一款真正意义上的Web端到端测试工具。
2、Playwright安装
Playwright功能强大但它的安装步骤非常简单只需要 2 步:
第 1 步安装 playwright-python 依赖库 (需要注意的是playwright库需要依赖Python3.7以上)
#此处可能是pip/pip3或者两者皆可
pip3 install playwright 可以在https://pypi.org/project/playwright/查看它的依赖版本信息。
第 2 步安装主流的浏览器驱动
这样会将 Chromeium、Firefox、Webkit 浏览器驱动下载到本地
# 安装浏览器驱动安装过程稍微有点慢请耐心等待
python3 -m playwright install
如果想查看Playwright支持的功能 可以直接在命令行输入
python3 -m playwright helpUsage: index [options] [command]Options:-V, --version output the version number-b, --browser browserType browser to use, one of cr, chromium, ff, firefox, wk,webkit (default: chromium)--color-scheme scheme emulate preferred color scheme, light or dark--device deviceName emulate device, for example iPhone 11--geolocation coordinates specify geolocation coordinates, for example37.819722,-122.478611--lang language specify language / locale, for example en-GB--proxy-server proxy specify proxy server, for example http://myproxy:3128 orsocks5://myproxy:8080--timezone time zone time zone to emulate, for example Europe/Rome--timeout timeout timeout for Playwright actions in milliseconds (default:10000)--user-agent ua string specify user agent string--viewport-size size specify browser viewport size in pixels, for example 1280,720-h, --help display help for commandCommands:open [url] open page in browser specified via -b, --browsercr [url] open page in Chromiumff [url] open page in Firefoxwk [url] open page in WebKitcodegen [options] [url] open page and generate code for user actionsscreenshot [options] url filename capture a page screenshotpdf [options] url filename save page as pdfinstall Ensure browsers necessary for this version of Playwrightare installedhelp [command] display help for command
从命令行帮助信息中可以看出Playwright支持的功能相当丰富
3、实操演示
开篇就提到使用Playwright无需写一行代码我们只需手动操作浏览器它会录制我们的操作然后自动生成代码脚本。
1录制脚本
我们先查看录制脚本的命令说明
python3 -m playwright codegen --helpUsage: index codegen [options] [url]open page and generate code for user actionsOptions:-o, --output file name saves the generated script to a file--target language language to use, one of javascript, python, python-async, csharp (default: python)-h, --help display help for commandExamples:$ codegen$ codegen --targetpython$ -b webkit codegen https://example.com
其中:
python -m playwright codegen 录制脚本 --help 帮助文档 -o 生成自动化脚本的目录 --target 脚本语言包含 JS 和 Python分别对应值为python 和 javascript -b 指定浏览器驱动 比如我要在baidu.com搜索用chromium驱动将结果保存为mikezhou.py的python文件。# 我们通过下面命令打开 Chrome 浏览器开始录制脚本 # 指定生成语言为:Python默认Python可选 # 保存的文件名mikezhou.py可选 # 浏览器驱动webkit默认webkit可选 # 最后跟着要打开的目标网站默认仅仅是打开浏览器可选 python3 -m playwright codegen --target python -o mikezhou.py -b chromium https://www.baidu.com
命令行输入后会自动打开浏览器然后可以看见在浏览器上的一举一动都会被自动翻译成代码如下所示: 最后自动化脚本会自动生成保存到文件中mikezhou.py, 且上述所有的人工操作都会被自动转化成代码
2支持同步
同步的关键字为sync_playwright
比如我们依次使用三个浏览器内核打开浏览器然后百度一下接着对在搜索界面截图最后关闭浏览器
from time import sleep from playwright import sync_playwright
# 注意默认是无头模式 with sync_playwright() as p: # 分别对应三个浏览器驱动 for browser_type in [p.chromium, p.firefox, p.webkit]: # 指定为有头模式方便查看 browser browser_type.launch(headlessFalse) page browser.newPage() page.goto(http://baidu.com)
from playwright import sync_playwrightdef run(playwright):browser playwright.chromium.launch(headlessFalse)context browser.newContext()# Open new pagepage context.newPage()# Go to https://www.baidu.com/page.goto(https://www.baidu.com/)# Click input[namewd]page.click(input[name\wd\])# Fill input[namewd]page.fill(input[name\wd\], 禾目大)# Press CapsLockpage.press(input[name\wd\], CapsLock)# Fill input[namewd]page.fill(input[name\wd\], 自动化测试实战宝典 )# Press Enterpage.press(input[name\wd\], Enter)# assert page.url() https://www.baidu.com/s?ieutf-8f8rsv_bp1rsv_idx1tnbaiduwd%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%AE%9E%E6%88%98%E5%AE%9D%E5%85%B8%20fenlei256rsv_pqaf40e9aa00012d5arsv_tc659gpz2%2Fjri1SAoIXdT9gP%2BmrqufXzRtMSSAL0n0fv7GSoLF5vaiNVPA3Urqlangcnrsv_enter1rsv_dltbrsv_sug338rsv_sug122rsv_sug7100rsv_sug20rsv_btypeiinputT8034rsv_sug49153# Close pagepage.close()# ---------------------context.close()browser.close()with sync_playwright() as playwright:run(playwright)# 执行一次搜索操作page.fill(input[name\wd\], 自动化测试实战宝典)with page.expect_navigation():page.press(input[name\wd\], Enter)# 等待页面加载完全page.waitForSelector(text搜索工具)# 截图page.screenshot(pathftest-{browser_type.name}.png)# 休眠3ssleep(3)# 关闭浏览器browser.close()
需要指出的是playwright-python 内置的 API 基本上囊括常见的自动化操作。
3支持异步
异步步的关键字为async_playwright异步操作可结合asyncio同时进行三个浏览器操作。
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(headlessFalse)page await browser.newPage()await page.goto(http://baidu.com)# 执行一次搜索操作await page.fill(input[name\wd\], 自动化测试实战宝典)await page.press(input[name\wd\], Enter)# 等待页面加载完全await page.waitForSelector(text搜索工具)# 截图await page.screenshot(pathftest-{browser_type.name}.png)await browser.close()asyncio.get_event_loop().run_until_complete(main())
4支持移动端
更厉害的是playwright还可支持移动端的浏览器模拟。下面是官方文档提供的一段代码模拟在给定地理位置上手机iphone 11 pro上的Safari浏览器首先导航到maps.google.com然后执行定位并截图。
from playwright import sync_playwrightwith sync_playwright() as p:iphone_11 p.devices[iPhone 11 Pro]browser p.webkit.launch(headlessFalse)context browser.newContext(**iphone_11,localeen-US,geolocation{ longitude: 12.492507, latitude: 41.889938 },permissions[geolocation])page context.newPage()page.goto(https://maps.google.com)page.click(textYour location)page.screenshot(pathcolosseum-iphone.png)browser.close()
5支持Pytest框架
另外还可以配合pytest插件一起使用给出一段官网示例:
def test_playwright_is_visible_on_google(page): page.goto(https://www.google.com) page.type(input[nameq], Playwright GitHub) page.click(input[typesubmit]) page.waitForSelector(textmicrosoft/Playwright) 当然除了上面列举出来的特性还有更多有意思的用法感兴趣的读者可以自行探索一下。
4、小结
playwright相比已有的自动化测试框架来说具有有很多优势比如
跨浏览器支持Chromium、Firefox、WebKit 跨操作系统支持Linux、Mac、Windows 可提供录制生成代码功能解放双手 可用于移动端 目前存在的缺点就是生态和文档还不是非常完备比如没有API中文文档、没有较好的教程和示例供学习。不过相信随着知道的人越来越多未来会越来越好。
最后再说一个小秘密Playwright 是一个跨语言的自动化框架除了支持 Python也支持Java、JS 等更加详细的功能可以通过官方项目去解锁~ 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战 四、App自动化项目实战 五、一线大厂简历 六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试
九、总结尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走
这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你