playwright的简单使用
安装
安装playwright
pip install pytest-playwright
安装浏览器
python -m playwright install
录制
python -m playwright codegen https://example.com
指定设备和cookie来打开录制,其中auth_state.json 可通过context.storage_state(path=“auth_state.json”)来获取
python -m playwright codegen --device=“iPhone 11” --load-storage=auth_state.json https://example.com
生成的代码在这里
简答的页面测试代码
from playwright.sync_api import sync_playwright
import json
with sync_playwright() as p:# 非无头模式,可以看到打开浏览器执行的过程,方便调试browser = p.chromium.launch(headless=False)# 指定设备和加载上下文状态context = browser.new_context(**p.devices["iPhone 11"],storage_state="auth_state.json")#打开新页面page = context.new_page()# cookies = [# {# "name": "sessionId",# "value": "204782D66497C87F00D085CDA16C0888",# "domain": "https://example.com",# "path": "/" }# ]# context.add_cookies(cookies)#导航到测试urlpage.goto("https://example.com")#页面元素点击page.click("text=待生效")# context.storage_state(path="auth_state.json")#断言assert page.title() == "优惠券"# browser.close()
设置 Cookie的三种方式
1、通过 storageState 保存和加载上下文状态
# 保存状态到文件,在当前目录下生成一个state.json文件storage = context.storage_state(path="state.json")# 创建新上下文时直接加载存储文件,实现免登录context = browser.new_context(storage_state="state.json")
2、使用 set_cookies() 手动设置 Cookie
# cookies = [# {# "name": "sessionId",# "value": "204782D66497C87F00D085CDA16C0888",# "domain": "https://example.com",# "path": "/" }# ]# context.add_cookies(cookies)
3、通过文件持久化与加载 Cookie
#读取文件中的cookie再set进去
import jsonwith open("cookies.json", "r") as f:cookies = json.load(f)
context.set_cookies(cookies)
# 登录后获取 Cookie,保存到文件中
cookies = context.cookies()
with open("cookies.json", "w") as f:json.dump(cookies, f)