playwright
- 简介:Playwright 是由微软推出的一款用于 Web 应用自动化测试的开源框架,它支持多浏览器、多平台,具有强大的 API 和现代化的自动化功能,适用于跨浏览器的 UI 测试。
- Playwright 支持所有现代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上进行本地或 CI 测试,无头测试或使用适用于 Android 和 Mobile Safari 的 Google Chrome 的原生移动模拟进行测试。
1. 安装 Playwright
安装版本 python3.8及以上
pip install pytest-playwright
安装所需的浏览器:
playwright install
Playwrigth 会安装 Chromium, Firefox 和WebKit 浏览器并配置一些驱动。等待安装就好~
安装完之后就可以进行自动化操作了。。。
2. Playwright 基本流程
Playwright 的基本工作流程:
- 启动浏览器
- 创建浏览器上下文
- 打开新页面
- 在页面上执行操作
- 关闭浏览器
同步模式:
from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()page.goto("https://www.baidu.com")print(page.title())browser.close()
异步模式:
import asyncio
from playwright.async_api import async_playwrightasync def main():async with async_playwright() as p:browser = await p.chromium.launch()page = await browser.new_page()await page.goto("https://www.baidu.com")print(await page.title())await browser.close()asyncio.run(main())
3. 浏览器上下文
Playwright 中的 “浏览器上下文” 是一种类似“浏览器标签页”的概念。每个上下文相当于一个独立的浏览器窗口,拥有自己的 cookies、缓存和存储,这使得在多会话测试中避免相互影响变得更容易。
# 创建一个新的上下文
context = browser.new_context()# 每个上下文独立运行
page1 = context.new_page()
page2 = context.new_page()page1.goto("https://example.com")
page2.goto("https://example.com/other-page")
4. 元素选择器与操作
Playwright 支持多种元素选择器,如 CSS、XPath 等,还支持文本选择器、角色选择器等。可以使用 page.locator 方法进行元素的定位和交互。
# 查找并点击一个按钮
page.locator("text=Submit").click()# 输入文本
page.locator("#username").fill("my_username")# 获取元素文本
text = page.locator(".info").text_content()
print("Info Text:", text)
5. 自动化测试断言
Playwright 提供了一些常用的断言方法,可以快速验证页面状态。例如:
# 验证页面 URL
assert page.url == "https://www.baidu.com"# 验证元素是否可见
assert page.locator("text=新闻").is_visible()
还可以使用 expect 模块提供更丰富的断言语法:
from playwright.sync_api import expect# 期望元素包含特定文本
expect(page.locator("link")).to_have_text("新闻")
6. 脚本录制与生成
Playwright CLI 提供了录制功能,可以录制用户在浏览器中的操作并生成代码,大大提高了使用效率。
使用 codegen
命令运行测试生成器,后跟要为其生成测试的网站的 URL。URL 是可选的,你始终可以在没有它的情况下运行命令,然后将 URL 直接添加到浏览器窗口中。
playwright codegen
执行完上述命令,会打开2个页面,可以记录所有操作,生成对应的代码。
代码生成页面:
有多种功能,可以录制,也可以定位元素
查看帮助文档 playwright codegen --help
Usage: playwright 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 generate, one of javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit (default: "python")--save-trace <filename> record a trace for the session and save it to a file--test-id-attribute <attributeName> use the specified attribute to generate data test ID selectors-b, --browser <browserType> browser to use, one of cr, chromium, ff, firefox, wk, webkit (default: "chromium")--block-service-workers block service workers--channel <channel> Chromium distribution channel, "chrome", "chrome-beta", "msedge-dev", etc--color-scheme <scheme> emulate preferred color scheme, "light" or "dark"--device <deviceName> emulate device, for example "iPhone 11"--geolocation <coordinates> specify geolocation coordinates, for example "37.819722,-122.478611"--ignore-https-errors ignore https errors--load-storage <filename> load context storage state from the file, previously saved with --save-storage--lang <language> specify language / locale, for example "en-GB"--proxy-server <proxy> specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"--proxy-bypass <bypass> comma-separated domains to bypass proxy, for example ".com,chromium.org,.domain.com"--save-har <filename> save HAR file with all network activity at the end--save-har-glob <glob pattern> filter entries in the HAR by matching url against this glob pattern--save-storage <filename> save context storage state at the end, for later use with --load-storage--timezone <time zone> time zone to emulate, for example "Europe/Rome"--timeout <timeout> timeout for Playwright actions in milliseconds, no timeout by default--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 commandExamples:$ codegen$ codegen --target=python$ codegen -b webkit https://example.com
可以看到我们可以通过-b
指定打开的浏览器,默认是chromium,-o
可以在操作结束后保存一个文件,直接执行,还可用 --device
指定手机浏览器设备…
这就是本次学习的内容了,后续继续深入了解不同的操作方式,框架,截图等内容。。。。