首页 > 其他分享 >软件测试|web自动化测试神器playwright教程(十一)

软件测试|web自动化测试神器playwright教程(十一)

时间:2023-06-02 18:37:00浏览次数:31  
标签:web playwright 登录 sync cookie context page 软件测试

前言

在我们进行web自动化测试的过程中,我们经常会面临需要登录的情况,每一次打开页面如果都需要重新登录的话,就会大大增加测试所需要的时间,体现不出自动化测试的优势,我们都知道selenium可以通过cookie实现登录,那么playwright能不能实现这个功能呢?

答案是肯定的,playwright可以实现保存cookie实现自动化登录的功能。

获取保存cookie

我们以登录GitHub网站为例,登录代码如下:

from playwright.sync_api import Playwright, sync_playwright


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://github.com/login')

    # Interact with login form
    page.get_by_label("Username or email address").fill("xxxxxxxxxxxxx")
    page.get_by_label("Password").fill("xxxxxxxxxxxxx")
    page.get_by_role("button", name="Sign in").click()
    t

with sync_playwright() as playwright:
    run(playwright)

我们可以实现GitHub网站的登录,登录之后我们需要保存我们的cookie信息,便于我们后续的登录操作,playwright提供了Context.storageState([options])方法用于保存cookie信息,代码如下:

from playwright.sync_api import Playwright, sync_playwright


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto('https://github.com/login')

    # Interact with login form
    page.get_by_label("Username or email address").fill("xxxxxxxxxxxxx")
    page.get_by_label("Password").fill("xxxxxxxxxxx")
    page.get_by_role("button", name="Sign in").click()
    
    # Continue with the test

    # # 保存storage state 到指定的文件
    # storage = context.storage_state(path="cookie.json")

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

软件测试|web自动化测试神器playwright教程(十一)_github

我们可以看到我们的文件中生成了一个cookie.json文件,我们可以在其他地方使用这个cookie用于登录,现在我们来测试cookie是否能够使用这个cookie实现登录。

登录

我们使用cookie来登录,使用方法如下:

# Create a new context with the saved storage state.
context = browser.new_context(storage_state="state.json")

我们来登录GitHub试一下能否登录。

from playwright.sync_api import Playwright, sync_playwright, expect




def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    # 加载本地cookies,免登陆
    context = browser.new_context(storage_state="cookie.json")

    # 打开页面继续操作
    page = context.new_page()
    page.goto('https://github.com/')
    page.pause()  # 打断点看是不是已经登录了

    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

总结

本文主要讲解了使用playwright,通过保存的cookie登录网站的操作步骤,与selenium类似,playwright也支持使用cookie登录,使我们的测试工作更加快速。


标签:web,playwright,登录,sync,cookie,context,page,软件测试
From: https://blog.51cto.com/u_15640304/6404531

相关文章

  • 软件测试|超好用超简单的Python GUI库——tkinter(十四)
    前言我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。我们可以通过tkinter的画布控件Canvas来实现绘制功能。Canvas画布控件Canvas控件具有两个功能,首先它可以......
  • 软件测试|超好用超简单的Python GUI库——tkinter(十五)
    前言上一篇文章我们介绍了tkinter的Canvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。参数介绍属性说明activedash当画布对象状态为"active"的时候,绘制虚线activefill当画布对象状态为"active"的时候,填充颜色activestipple当画布对象状态为......
  • django_web(上)
    建立数据库fromdjango.dbimportmodels#Createyourmodelshere.classAdmin(models.Model):username=models.CharField(verbose_name='用户名',max_length=32)password=models.CharField(verbose_name='密码',max_length=64)classDepartme......
  • 【web 开发】PHP8中对数组操作的新变化
    自动创建元素的顺序改变在PHP8中,引用赋值时,自动创建的数组元素或者对象属性的顺序和PHP7版本相比发生了变化,下面我们通过例子来体验下变化在哪里.<?php$array=[];$array['a']=&$array['b'];$array['b']=1;echo"\n";var_dump($array);?>执行结果如下:这个结果是PHP8......
  • 软件测试|教你怎么向SQL中插入数据
    前言有的时候,我们需要向数据库表中写入新数据,但是我们不可能新建一个表,我们需要使用插入功能向数据库表中写入新数据。SQL提供了INSERTINTO的方法,满足我们向表中插入数据行的需求。INSERTINTOINSERTINTO的基本语法如下:按指定的列插入数据,语法如下:INSERTINTOtable_name(column......
  • Web安全测试—Web应用基础
    基本构件Web应用有各种各样的形式和规模。可能是一台服务器,使用相当轻量级的脚本语言,向用户发送各种类型的报告;也可能是庞大的B2B工作流系统,每小时处理上百万条订单和发票;也可能是介于两者之间的任何形式。什么是技术栈任何Web应用中,我们都必须考虑一套技术,这......
  • WebStorm前端启动JetLinks 物联网基础平台(2.x)
    目录一、环境准备二、下载源码三、安装依赖四、修改配置五、启动项目六、访问项目一、环境准备1.降级node版本为12.22.0使用node版本管理器gnvm_苍穹之跃的博客-以管理员身份打开cmd,cd到node安装目录。2.降级npm版本为[email protected]二、下载源码jetlinks-ui-antd:......
  • 基于Grafana的WebUI添加Prometheus数据源(三)
    基于Grafana的WebUI添加Prometheus数据源(三)1、Grafana介绍1.1什么是GrafanaGrafana是一款近几年比较流行的开源数据绘图工具平台。Grafana原生支持包括但不限于InfluxDB,MySQL,OpenTSDB,PostgreSQL和Prometheus等多种数据源作为输入源数据。官方地址:https://grafana.com......
  • 软件测试,到底应该怎样学习
    在当今的数字化时代,金融行业一直是最重要的领域之一。随着越来越多的人使用金融服务,如银行、保险、投资等,确保系统稳定和安全是至关重要的。因此,软件测试在金融项目中扮演着至关重要的角色。最近,在一个四天内完成软件测试的金融项目中,我们发现了很多问题。首先,我们检查了用户界面,确......
  • webrtc-streamer使用
    下载地址:https://github.com/mpromonet/webrtc-streamer/releases获取使用的所有api:webrtc-streamer的服务地址:192.168.1.8:8000查询所有api:http://192.168.1.8:8000/api/help["/api/addIceCandidate","/api/call","/api/createOffer",......