Playwright
Playwright 为现代网络应用程序提供可靠的端到端测试
开始
import re
from playwright.sync_api import Page, expect, sync_playwright
# https://playwright.dev/python/docs/writing-tests
def test_has_title(page: Page):
page.goto("https://playwright.dev/")
# Expect a title "to contain" a substring.
expect(page).to_have_title(re.compile("Playwright"))
# 如果成功会继续往下走,如果失败会抛出异常
def test_get_started_link(page: Page):
page.goto("https://playwright.dev/")
# Click the get started link.
page.get_by_role("link", name="Get started").click()
# Expects page to have a heading with the name of Installation.
expect(page.get_by_role("heading", name="Installation")).to_be_visible()运行方式有两种,包括使用 pytest ,或者通过 mian 函数调用
关于 pytest
在命令行中运行 pytest 时会自动调用,或者使用 vscode 插件进行测试,文件名必须以 test_ 开头或者 _test 结尾
要在有头模式下运行测试,请使用 --headed 标志,其他 CLI 参数参考文档
要记录轨迹,
pytest --tracing on,生成的轨迹文件在 test-results 目录下,要查看轨迹,playwright show-trace trace.zip
关于通过 mian 函数调用
操纵浏览器
实例1:截图
实例2:百度搜索
自动生成测试代码
使用 codegen 命令运行测试生成器,后跟要为其生成测试的网站的 URL。URL 是可选的,如果省略,可以直接在浏览器窗口中添加
在浏览器中运行 codegen 并执行操作。Playwright 会自动生成交互代码。代码生成器会分析渲染的页面,并推荐最佳定位器,优先考虑角色、文本和测试 ID 定位器。当多个元素与某个定位器匹配时,生成器会对其进行改进,使其能够唯一地标识目标元素,从而减少测试失败和不稳定的情况。
使用代理
https://www.cnblogs.com/longronglang/p/18263434
异步写法
1、同步的优点:
代码结构简单易懂,不需要学习
async/await语法适用于小规模或简单任务
调试和理解同步代码更简单
2、异步的优点:
能更高效地利用系统资源,避免阻塞等待IO
对于长时间操作如网络请求更高效
可以支持并发执行多个任务
对于大规模和复杂系统更有利
3、区别
对于小任务和学习用途,同步代码结构更简单。
对于需要长时间IO等待的任务(如网络请求),使用异步可以更高效。
对于需要支持高并发的系统(如网站),使用异步模型可以支持更多并发连接。
多线程同步会带来锁的问题,而异步避免了锁的使用。
异步的FUTURE模式也更易于扩展性好,支持动态增加回调函数。
4、总结
小任务用同步
长时间IO任务用异步
高并发系统用异步
以后的功能扩展考虑异步更灵活
一般来说对于现代化系统,异步编程模型将是主流趋势。但同步在某些场景也同样易用。选择时要根据具体需求来权衡。
最后更新于