最新要闻

广告

手机

《使命召唤:战区》将停止运营,玩家对此不满

《使命召唤:战区》将停止运营,玩家对此不满

《封神第一部》制式海报昆仑仙境独特美学大开眼界

《封神第一部》制式海报昆仑仙境独特美学大开眼界

家电

PlayWright(十)

来源:博客园


(资料图)

在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文件中,我们查看进入网站的截图

至此,我们完成了需求,

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

关键词: