首页 > 编程语言 >《最新出炉》系列入门篇-Python+Playwright自动化测试-8-上下文(Context)

《最新出炉》系列入门篇-Python+Playwright自动化测试-8-上下文(Context)

时间:2023-07-17 10:34:21浏览次数:46  
标签:Playwright 浏览器 context Python 入门篇 测试 new 上下文 browser

1.简介

其实前边的文章中也提到过Context,只不过是 一笔带过,但是宏哥觉得在playwright中挺重要的,所以宏哥今天单独将其拎出来讲解和分享一下,希望对您有所帮助或者参考。

2.前言

Playwright为每个测试创建一个浏览器上下文,即BrowserContext,浏览器上下文相当于一个全新的浏览器配置文件,提供了完全的测试隔离,并且零开销。创建一个新的浏览器上下文只需要几毫秒,每个上下文都有自己的Cookie、浏览器存储和浏览历史记录。浏览器上下文允许同时打开多个页面并与之交互,每个页面都有自己单独的状态,一个 BrowserContext 可以包含多个 Page。一个BrowserContex就像是一个独立的匿名模式会话(session),非常轻量,但是又完全隔离。

每个browser实例可有多个BrowserContex,且完全隔离。比如可以在两个BrowserContext中登录两个不同的账号,也可以在两个 context 中使用不同的代理。
context还可用于模拟涉及移动设备、权限、区域设置和配色方案的多页面场景。

3.Context实现测试浏览器环境隔离

使用 Playwright 编写的测试在称为浏览器上下文的隔离的全新环境中执行。这种隔离模型提高了可重复性并防止级联测试失败。

3.1什么是测试隔离

测试隔离是指每个测试与另一个测试完全隔离。每个测试都独立于任何其他测试运行。这意味着每个测试都有自己的本地存储、会话存储、cookie 等。Playwright 使用BrowserContext实现了这一点,这相当于隐身式配置文件。它们的创建速度快、成本低,并且完全隔离,即使在单个浏览器中运行也是如此。Playwright 为每个测试创建一个上下文,并在该上下文中提供一个默认页面。

3.2为什么测试隔离很重要

  • 没有失败结转。如果一个测试失败,它不会影响另一个测试。
  • 易于调试错误或不稳定,因为您可以根据需要多次运行单个测试。
  • 并行运行、分片等时不必考虑顺序。

测试隔离有两种不同的策略:从头开始或在两者之间进行清理。在测试之间清理的问题是很容易忘记清理,有些东西是不可能清理的,比如“访问过的链接”。来自一个测试的状态可能会泄漏到下一个测试中,这可能会导致您的测试失败并使调试变得更加困难,因为问题来自另一个测试。从头开始意味着一切都是新的,因此如果测试失败,您只需查看该测试即可进行调试。

3.3Playwright 如何实现测试

Playwright 使用浏览器上下文来实现测试隔离。每个测试都有自己的浏览器上下文。每次运行测试都会创建一个新的浏览器上下文。使用 Playwright 作为测试运行程序时,默认情况下会创建浏览器上下文。否则,您可以手动创建浏览器上下文。

browser = playwright.chromium.launch()
context = browser.new_context()
page = context.new_page()

浏览器上下文还可用于模拟涉及移动设备、权限、区域设置和配色方案的多页面场景。

Playwright 可以在一个场景中创建多个浏览器上下文。当您想测试多用户功能(如聊天)时,这很有用。


# coding=utf-8

标签:Playwright,浏览器,context,Python,入门篇,测试,new,上下文,browser
From: https://www.cnblogs.com/du-hong/p/17559299.html

相关文章

  • 谁说投资很难?风变Python智能交易巧学“量化交易”
    风变Python智能交易课程一经推出,让不少对“量化交易”感兴趣的人好像发现了“新大陆”一般,更有投资者在学习完风变Python智能交易课程之后表示:智能交易没有想象中的那么难!其实这与风变Python智能交易课程的设计是有密切联系的,首先风变这套课程在内容上设计得更加浅显易懂,研......
  • 解决php中通过exec调用python脚本报ModuleNotFoundError错误
    背景出于某些原因,我们有时会在PHP中通过exec来调用Python代码,有可能是某些功能只能用Python实现(或用Python实现比较方便),有可能是出于性能考虑(Python可以执行耗时任务)。但我们有时会发现,在控制台用命令行的方式运行python脚本一切正常,在php中用exec调用就报ModuleNotFoundEr......
  • python怎么读取txt文件
    1.简单的将文件读取到字符串中f=open("data.txt","r")#设置文件对象str=f.read()#将txt文件的所有内容读入到字符串str中f.close()#将文件关闭2.按行读取整个文件第一种方法f=open("data.txt","r")#设置文件对象line=f.readline()line=line[:-1]wh......
  • Dubbo接口+python的接口测试举例(用Python自带的telnetlib库进行dubbo测试)
      最近公司开发新的一套系统,开发出来的方案会基于dubbo分布式服务框架开发的,那么什么是dubbo,身为测试的我,第一眼看到这个,我得去了解了解dubbo是啥玩意,为开展的测试工作做准备,提前先学dubbo的相关知识。 1、什么是dubbo   Dubbo来源于阿里巴巴集团某个团队研发出来的一个......
  • python利用小列表中元素排序对整个大列表中的小列表进行排序
    一、了解sorted() 函数sorted()函数是Python内置的用于排序可迭代对象的函数,它可以接受多个参数来进行灵活的排序操作。下面是对sorted()函数的参数要求和使用方法的详细说明:参数列表:iterable(必需):表示要进行排序的可迭代对象,例如列表、元组、集合等。key(可选):指定一个函数......
  • 常用语言的线程模型(Java、go、C++、python3)
    背景知识软件是如何驱动硬件的?硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中。如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工作。而驱动程序怎么让硬件工作的呢?驱动程序作为硬件和操作系统之间的媒介,可以......
  • Python | requests库
    一、基本概念1、简介requests模块是python基于urllib,采用Apache2Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。Requests的哲学是以PEP20的习语为中心开发的,所以它比urllib更加Pythoner。2、获取通过pip......
  • subprocess Python执行系统命令最优选模块
    简介subprocess是Python中执行操作系统级别的命令的模块,所谓系级级别的命令就是如ls/etc/userifconfig等和操作系统有关的命令。subprocess创建子进程来执行相关命令,并连接它们的输入、输出和错误管道,获取它们的返回状态。subprocess来源Subprocess模块开发之前,标准......
  • Python报错 | 关于requests.exceptions.SSLError解决方案
    学习爬虫遇到的错误。报错信息:requests.exceptions.SSLError:HTTPSConnectionPool(host=’*****’,port=443):Maxretriesexceededwithurl:/(CausedbySSLError(“Can’tconnecttoHTTPSURLbecausetheSSLmoduleisnotavailable.”))解决方法:检查是否已安装......
  • python: xmlhelper
     xml:<?xmlversion="1.0"?><data><countryname="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighborname=&quo......