目录
0X01 简单介绍
最近在学习新的前端自动化测试框架——Playwright。相信不少开发者已经听说过它的名字,今天分享一下我对这个神器的初步探索。
作为一款开源的 Node.js 库,Playwright 可以用于浏览器自动化测试和 UI 测试。与其他类似工具相比,它有一个独特的优点——不依赖于任何第三方库或插件,支持 Chromium、Firefox 和 WebKit 三大浏览器内核,并且支持 Windows、Mac 和 Linux 等多个操作系统平台。
那么,什么是 Playwright 的具体作用呢?我们可以从以下几个角度来介绍它的特点:
1. 高效灵活的 API
Playwright 提供了一个高效灵活的 API,能够帮助开发者完成各种不同的操作,例如打开页面、点击按钮、填充表单、截图等等。值得注意的是,Playwright 与浏览器 API 相似,具有更好的可读性和可维护性。
2. 直观友好的调试模式
Playwright 拥有一个直观友好的调试模式,通过它,我们可以方便快捷地找到解决问题的方法。同时,它也支持 DevTools 协议,允许我们对浏览器的调试工具进行操作。
3. 多语言支持
Playwright 提供了多语言(JavaScript、TypeScript、Python)的支持,使得我们可以以自己熟悉的语言来编写测试脚本。
0X02 对比selenium优点
对比 Selenium,Playwright 有以下几个优点:
1. 更好的跨平台支持:Playwright 支持多个操作系统平台,包括 Windows、Mac 和 Linux 等,而 Selenium WebDriver 的不同版本存在平台差异,比如 Safari Driver 只支持 MacOS。
2. 更好的浏览器兼容性:Playwright 支持多个浏览器内核,包括 Chromium、Firefox 和 WebKit,而 Selenium 主要围绕着 Firefox 和 Chrome,对其他浏览器的支持性不如 Playwright。
3. 更好的 API 设计:Playwright 的 API 设计更加简洁、直观和易于使用,与浏览器 API 大致相同,可读性和可维护性更强,相比之下,Selenium 的 API 相对复杂一些。
4. 更好的运行速度:Playwright 在 UI 自动化测试时,其执行速度可以比 Selenium 更快。除了支持并发执行,提升测试执行速度,还可以在多个浏览器实例之间共享网络栈,提升测试效率。
0X03 安装
在 Python 上使用 Playwright,需要安装 Python 版本的 Playwright 库。
Step1:pip install playwright
Step2:playwright install
安装成功后 ,可以通过以下方式来使用 Playwright:
from playwright.sync_api import Playwright, sync_playwright_with_args
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch()
context = browser.new_context()
page = context.new_page()
page.goto("https://www.google.com/")
page.type("input[name='q']", "Playwright")
page.press("input[name='q']", "Enter")
print(page.title())
context.close()
browser.close()
0X04 简单上手
一个简单的 Python 脚本示例,以 Chrome 浏览器为例,演示如何使用 Playwright 自动化搜索百度关键字并截取页面。
from playwright.sync_api import Playwright, sync_playwright_with_args
def run(playwright: Playwright) -> None:
# 启动浏览器并创建新的页面
browser = playwright.chromium.launch()
context = browser.new_context()
page = context.new_page()
# 打开搜索引擎并输入关键词
page.goto('https://www.baidu.com')
page.type('#kw', 'Playwright')
# 点击搜索按钮并等待页面加载完成
page.click('#su')
page.wait_for_selector('#content_left', state='visible')
# 截取页面并保存到本地
page.screenshot(path='playwright.png')
# 关闭页面和浏览器
context.close()
browser.close()
with sync_playwright_with_args() as playwright:
run(playwright)
首先导入了 Playwright 库,并通过Playwright类型的实例来启动 Chromium 浏览器,创建页面并输入搜索关键词。然后,我们点击搜索按钮并等待搜索结果的页面完全加载完成后,我们通过page.screenshot()方法来获取页面截图,并将截图保存到本地文件中。最后,我们关闭浏览器,结束测试。
0X05 总结
总之,Playwright 是一款非常值得尝试的自动化测试框架,具备高效灵活的 API、直观友好的调试模式和多语言支持等优点。尤其是在跨平台和浏览器兼容性、API 设计和执行速度方面表现优秀。希望通过这篇文章的介绍,能够让读者初步了解 Playwright 的特点和使用方法~