PlayWright(十) - cookie登录态

  在web自动化测试中,经常会有登录的情况,并且每次打开页面都需要登录,非常麻烦,我们使用playwright的cookie实现自动化登录

 1、使用秘籍

①   登录网站,正常输入账号密码登录
②   保存cookie信息
③   使用之前cookie信息再次登录网站
 

 2、小试牛刀

我们以登录一个测试平台为例,网址:http://demo.liumatest.cn/#/home/dashboard
 
登录代码如下:
with sync_playwright() as playwright:  # 省略了start启动
    browser = playwright.chromium.launch(headless=False, slow_mo=5000)  # 设置了每步等待时间为3s
    context = browser.new_context()
    page = context.new_page()  # 打开一个页面
    page.goto('http://demo.liumatest.cn/#/home/dashboard')  # 打开地址

    # 输入账号密码登录
    page.fill('#username','demo')  # 输入账号
    page.fill('#password','123456')  # 输入密码
    page.click('#login')  # 点击登录
    
    page.wait_for_timeout(2000)
    browser.close()  # 省略了关闭playwright对象

 

运行一下,可以看到我们已经成功登录了,现在我们要保存登录的cookie信息,我们使用下边这个:
 
context.storage_state(path="cookie.json")
 
意思是什么呢?听我给你慢慢解释:
 

storage_state 直译为存储状态,就如直译一样,这个方法会返回当前浏览器上下文的存储状态,其中就会包含当前的cookie,我们如果提供路径参数,就会保存到指定的文件中,返回是一个字典

 
所以上边我们使用了path表示把cookie保存存储到cookie.json的文件中
 

 3、再接再厉

我们接着用上边例子看下,在登录成功后的代码里添加
 
page.click('#login')  # 点击登录
context.storage_state(path="cookie.json")   # 保存storage_state 到JSON文件

 

再次运行查看下,我们的cookie.json文件已经保存在当前项目地址下了
 
到这里,我们第二步也已经完成了
 
接下来,我们来直接登录网站吧,看是不是已经登录成功了
with sync_playwright() as playwright:  # 省略了start启动
    browser = playwright.chromium.launch(headless=False, slow_mo=5000)  # 设置了每步等待时间为3s
    
    context = browser.new_context(storage_state="cookie.json")

    page = context.new_page()  # 打开一个页面
    page.goto('http://demo.liumatest.cn/#/home/dashboard')  # 打开地址
    page.screenshot(path="image.png")
    browser.close()  # 省略了关闭playwright对象

我们怎么检验是否登录成功呢?

 

选择使用screenshot的方法,意思是截图整个页面,保存在当前的image.png文件中,我们查看进入网站的截图

 

至此,我们完成了需求,

那接下来找一个网站尝试下吧

 
posted @ 2023-06-26 15:44  似小陈ya  阅读(1913)  评论(0编辑  收藏  举报