【pytest、playwright】多账号同时操作

目录

 方案实现思路:

方案一:

方案二:


 方案实现思路:

依照上图所见,就知道,一个账号是pytest-playwright默认的环境,一个是 账号登录的环境

方案一:

直接上代码:

import time
from playwright.sync_api import Page, BrowserContext
import pytest
from pages.explore.explore import ExplorePage
from playwright.sync_api import expect
class TestLogin():@pytest.fixture(autouse=True)def for_each(self,page:Page):self.login = ExplorePage(page)# 打开页面1,已登录的账号进行操作self.login.gotoURL()yieldprint('后置操作')def testmore(self,playwright):browser = playwright.chromium.launch(channel='chrome', headless=False)context = browser.new_context()page2 = context.new_page()self.login2 = ExplorePage(page2)# 打开页面2,未登录的账号进行操作self.login2.gotoURL()

代码解读:

  • 在case执行前,会自动调用for_each方法,这里面默认的登录用户就是conftest.py中配置的用户,执行case时,我们又重新打开浏览器,重新创建一个context上下文,这里我们就是账号2了,此时是未登录状态。此时就有了两个浏览器同时打开,第一个是登陆状态,第二个是未登录状态~
  • 这种方式实现并不好,因为如果我们需要登录的话,很可能有些网站支持不了

方案二:

在conftest.py文件中来配置:

@pytest.fixture(scope='module')
def more_context(browser_context_args, browser, pytestconfig):# 将browser_context_args中配置的信息复制到context_args中,除了storage_state【这个是登录用户的信息】context_args = {k: v for k, v in browser_context_args.items() if k != 'storage_state'}# 获取新的登录用户的信息,并且需要将\\替换为/,否则找不到文件storage_state = str(pytestconfig.rootpath.joinpath('auth/cookie.json')).replace('\\', '/')# 从文件中读取出新的登录用户的信息,并且将内容填充到context_args的storage_state中# 关于新的登录用户信息,这部分,也可以不做,那就表示第二个用户是未登录状态,也可以满足一些自动化的测试点with open(storage_state, 'r') as file:context_args['storage_state'] = json.load(file)# 根据新的context_args信息,来创建新的context上下文对象context = browser.new_context(**context_args)return context

上述中cookie.json的内容怎么来,可以看这篇文章:【pytest、playwright】构建POM项目,以及解决登录问题,allure环境问题 

case中的实现:

import timeimport playwright.sync_api
from playwright.sync_api import Page, BrowserContext
import pytest
from pages.explore.explore import ExplorePage
from playwright.sync_api import expect
class TestLogin():@pytest.fixture(autouse=True)def for_each(self, page:Page):self.login = ExplorePage(page)# 打开页面1,已登录的账号进行操作self.login.gotoURL()yieldprint('后置操作')def testmore02(self, more_context:BrowserContext):page2 = more_context.new_page()self.login2 = ExplorePage(page2)# 打开页面2,未登录的账号进行操作self.login2.gotoURL()time.sleep(5)print('账号2')

上述就会产生两个用户了,一个是playwright默认生成的,一个是我们手动创建的~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573240.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搜索与图论——Dijkstra

最短路算法 稠密图与稀疏图 n为点数,m为边数。m远小于n的平方为稀疏图,m接近n的平方为稠密图。 稀疏图用邻接表存,稠密图用邻接矩阵存 朴素版dijkstra时间复杂度为O(n^2),对于稠密图可以ac,但遇到稀疏图时会TLE。 dijkstra函数实…

软考高级:软件构件标准(COBRA 、J2EE、DNA2000)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【数据结构和算法初阶(c语言)】二叉树系列oj题目图文详解

目录 1.单值二叉树 2.判断两颗二叉树是否相同 3.二叉树的前序遍历 接口了解 4.判断一棵树是不是另外一棵树的子树 5.判断一棵树是不是对称二叉树 6.二叉树遍历 1.单值二叉树 . - 力扣(LeetCode) 如果二叉树每个节点都具有相同的值,那么该二…

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令 此处列举了docker及docker-compose的常用命令,一方面可以做个了解,另一方面可以在需要的时候进行查阅。不一定要强行记忆,用多了就熟悉了。 1、…

Fastjson配置消息转换器(时间格式问题)

问题: 我们可以看见,日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型,默认是由java的Jackson来处理,使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法,例如&…

案例分析-IEEE 754浮点标准

案例一: 请分析IEEE 754双精度浮点数规格化数的表示范围。 案例二: 规格化浮点数的Bias为什么采用2k-1-1而不是2k-1​?非规范数的指数E1-Bias而不是0-Bias? (1) ① bias 127时 E e - 127 (00…

7.3*3卷积核生成

1.卷积核 在数字图像处理中的各种边沿检测、滤波、腐蚀膨胀等操作都离不开卷积核的生成。下面介绍如何生成各种3X3的卷积核。为后面的数字图像操作打下基础。   由于图像经过卷积操作后会减少两行两列,因此在生成卷积核的时候一般会对图像进行填充,填充…

Qt中QIcon图标设置(标题、菜单栏、工具栏、状态栏图标)

1 exe程序图标概述 在 Windows 操作系统中,程序图标一般会涉及三个地方; (1) 可执行程序(以及对应的快捷方式)的图标 (2) 程序界面标题栏图标 (3)程序在任务…

2014年认证杯SPSSPRO杯数学建模C题(第一阶段)土地储备方案的风险评估全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 C题 土地储备方案的风险评估 原题再现: 土地储备,是指市、县人民政府国土资源管理部门为实现调控土地市场、促进土地资源合理利用目标,依法取得土地,进行前期开发、储存以备供应土地的行为。土地…

c++|STL简介+string类的使用(常用接口)

目录 一、STL简介 1.1STL的版本 1.2STL六大组件 1.3STL的重要性及缺陷 二、string类简介 2.1string类了解 2.2为什么学习string类 三、string类使用(常用接口) 3.1string类的成员函数 3.1.1构造函数 3.1.2析构函数 3.1.3“”运算符重载函数 3.2迭代器(iterator)s…

http认证

1.Digest认证 各字段含义: Nonce 服务器直接返回的数据 H1MD5(user”:”realmpassword) H2MD5(method”:”url) method为请求类型、url不包括域名 Nc 指当前的第几次请求,使用8位16进制显示 Cnonce 8位随机字符串 ResponseMD5(H1”:”nonce”:”…

机器学习 | 期望最大化(EM)算法介绍和实现

在现实世界的机器学习应用中,通常有许多相关的特征,但只有其中的一个子集是可观察的。当处理有时可观察而有时不可观察的变量时,确实可以利用该变量可见或可观察的实例,以便学习和预测不可观察的实例。这种方法通常被称为处理缺失…