在Playwright中使用cookie

https://blog.csdn.net/karl41/article/details/120159254

在编写UI自动化测试用例的时候,通常会采用每个测试用例前打开新页面重新进行登录,以减少用例间的影响,比如一个测试用例执行失败会影响到下一个测试用例的执行,或者下一个用例的开始依赖于上一个用例的结束页面。但是这种方式会使得测试用例的执行时间大幅度上升,尤其是在测试用例划分的颗粒度比较小的时候;加入一个项目中有2000个测试用例,登录操作耗时2秒,那么光耗费在登录上面的时间就有4000秒,达到一个多小时了,严重影响测试执行效率,再假如项目中使用了验证码限制登录的情况,那么就更复杂了。所以,如果可以将登录状态保持住,开始测试用例的时候打开新页面,跳过登录直接进入到待测系统中,就可以大幅度提高测试执行效率。通常,每种UI自动化测试工具都会有类似的功能,这里以Playwright为例来介绍如何实现。

功能实现 在Playwright中提供了现成的方法,通过 context.storage_state(path=’<文件路径>‘) ,可以将当前浏览器上下文的全部状态保存下来,在创建浏览器上下文时,添加 storage_state 参数即可读取保存的文件,从而完全恢复之前的浏览器状态。示例代码如下

首次登陆系统

from playwright.sync_api import sync_playwright

with sync_playwright() as playwright: browser = playwright.chromium.launch() context = browser.new_context() page = context.new_page()

    # 登陆系统
page.goto('<login url>')
page.fill('<username>', '<username selector>')
page.fill('<password>', '<password selector>')
page.click('<login button selector>')

    # 判断是否登陆成功
assert 'Welcome' in page.title()

    # 保存状态文件
context.storage_state(path='login_data.json')

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

使用已保存的状态文件跳过登录状态直接访问系统

with sync_playwright() as playwright: browser = playwright.chromium.launch()

    # 创建浏览器上下文时加载状态文件
context = browser.new_context(storage_state='login_data.json')
page = context.new_page()

    # 直接访问登录后的URL
page.goto('<welcome url>')

    # 判断是否访问到登录后的页面
assert 'Welcome' in page.title()

1 2 3 4 5 6 7 8 9 10 11 12 13 结合Pytest ———————————————— 版权声明:本文为CSDN博主「凌空摘星」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/karl41/article/details/120159254

参考: