一、层级
在Playwright种,测试层级为
Broswer->Context->Page
二、创建浏览器示例,开启浏览器
browser = playwright.chromium.launch(headless=False, args=['--start-maximized'])
上面启动了一个浏览器,开启有头模式,并且通过args参数向chrome传递开启时窗口最大化。
开启浏览器格式为playwright.browser_type.launch (...args),browser_type为浏览器类型
args为传递给浏览器的参数,这个可以参考浏览器的文档。
忽略HTTPS告警:
'--ignore-certificate-errors'
请参考官方文档,查看完整的API参数列表:BrowserType | Playwright Python
三、启动上下文
context = browser.new_context(no_viewport=True)
上下文就是浏览器的环境,Page是页面包含了元素、组件的状态等等,而上下文则包括了会话状态、Cookie、页面信息等。
注意,我们需要设置no_viewport=True,否则将默认按照800*600创建视口,你会发现,窗口很大,但是网页很小。
四、为上下文增加一个Cookie
browser_context.add_cookies([cookie_object1, cookie_object2])
参数为字典列表,每个cookie字典有如下字段,
其中url或者域名、path虽然都是可选的,但必须要有一个。
name 名称
value 值
url 可选
domain 域名
path 路径
expires 浮点数,过期时间,Unix时间(精确到秒)
可选
httpOnly 是否为httpOnly,可选
secure 安全模式,可选
sameSite "Strict"|"Lax"|"None" 同站策略,可选
五、前往页面
page = context.new_page()
page.goto("https://www.baidu.com")
在context上新建一个页面对象然后调用goto方法即可。
六、退出浏览器
browser_context.close()
browser.close()
先关闭上下文,再退出浏览器。
关闭上下文时,上下文所属的页面也会一起关闭。
七、以特定设备布局打开浏览器
from playwright.sync_api import sync_playwright
def run(playwright):
iphone_13 = playwright.devices['iPhone 13']
browser = playwright.webkit.launch(headless=False)
context = browser.new_context(
**iphone_13,
)
with sync_playwright() as playwright:
run(playwright)