python+playwright自动化测试(一):安装及简单使用,截图录屏

目录

基本使用

浏览器调用

启用浏览器

创建窗口对象

访问URL

页面的刷新、返回、前进

关闭

截图、录屏、保存pdf

截图

录屏

保存为pdf

设置窗口大小

调试模式

手机模式及new_context的更多参数

手机模式

new_context的其他参数

设置语言和时区

设置和修改位置

用户代理设置

离线模式

禁用或启用java_script_enabled


playwright是一个非常强大的自动化框架,支持Linux、Mac以及Windows操作系统操作,支持Chromium、Firefox、WebKit等主流浏览器自动化操作。

官网:https://playwright.dev/

安装playwright框架:pip install playwright

安装浏览器驱动:playwright install ,可指定对应浏览器安装,如playwright install Chromium,不指定时安装默认的Chromium、Firefox、Webkit,自动化运行需要在对应浏览器和驱动下使用,不安装无法运行脚本。

基本使用

浏览器调用

from playwright.sync_api import sync_playwright
from time import sleepwith sync_playwright() as p:# wd = p.firefox# wd = p.chromium# wd = p.webkit

启用浏览器

headless:指定有头或无头模式(显示或隐藏浏览器界面运行脚本)

with sync_playwright() as p:browser = p.chromium.launch(headless=False)

创建窗口对象

page = browser.new_page()

访问URL

page.goto('https://www.baidu.com')

页面的刷新、返回、前进

    page.reload()  # 刷新页面,支持timeout和wait_until参数page.go_back()  # 回退,支持timeout和wait_until参数page.go_forward()  # 前进,支持timeout和wait_until参数

关闭

    page.close()  # 关闭页面browser.close()  # 关闭浏览器

截图、录屏、保存pdf

截图

支持设置截图的前景背景大小等参数,见源码

截取整个页面

page.screenshot(path='screenshot.png', full_page=True)  # 设置截取整页full_page

截取某个元素

    img = page.locator('#kw')img.screenshot(path=f'input_box.png')

 

录屏

with sync_playwright() as p:browser = p.chromium.launch(headless=True) context = browser.new_context(record_video_dir="videos/",  # 录屏保存文件保存位置record_video_size={'width': 1920, 'height': 1080}  # 设置录屏像素,不设置时会发现录下来的视频很模糊)page = context.new_page()

record_video_size参数的设置关键性,不设置时录屏内容很糊(可解决playwright录屏内容模糊的问题),设置和不设置的效果对比如下

保存为pdf

page.pdf(path='page.pdf')

设置窗口大小

窗口最大化设置

方法一:

增加args参数和no_viewport参数

args=['--start-maximized']设置启动窗口最大化,传递给浏览器实例“最大化”参数项,args参数设置项非常丰富:https://peter.sh/experiments/chromium-command-line-switches/

with sync_playwright() as p:browser = p.chromium.launch(headless=False, args=['--start-maximized'])context = browser.new_context(no_viewport=True  # 禁用窗口大小)page = context.new_page()

 方法二:

支持自由大小设置

    context = browser.new_context(viewport={'width': 1920, 'height': 1080},  # 设置窗口大小)page = context.new_page()

方法三:

支持自由大小设置

page.set_viewport_size({'width': 1920, 'height': 1080})  # 设置窗口大小

方法二和方法三效果相同,一个在创建窗体前,一个在创建窗体后。

方法一必须是headless=False时生效(即显示模式下),方法二三不受headless限制,均生效。

方法一截图操作的图片高度偏小,方法二三截图操作的图片分辨率和代码中设置的一致。

方法一截图时保持屏幕的缩放比例,方法二三按屏幕缩放比例固定为100%时进行截图。

调试模式

with sync_playwright() as p:browser = p.chromium.launch(headless=False, slow_mo=1000)  # slow_mo:慢动作模式,用于调试模式context = browser.new_context(record_har_path="debug.har")  # 保存调试追踪,page.pause()开启调试模式后可见效果page = context.new_page()page.pause()  # 开启调试模式

手机模式及new_context的更多参数

手机模式

    iphone = p.devices['iPhone 13 Pro']context = browser.new_context(**iphone,  # 添加设备)

new_context的其他参数

设置语言和时区

locale='zh-CN', # 设置语言
timezone_id='Asia/Shanghai', # 设置时区为上海

将locale='de-DE'设置为德语后,访问https://bing.com/会发现页面语言变为德语

设置和修改位置

可访问百度地图看看效果哦

context = browser.new_context(
geolocation={'longitude': 120.756379, 'latitude': 30.783679},
permissions=['geolocation']
)context.set_geolocation({'longitude': 121.09213, 'latitude': 32.010647})
用户代理设置

user_agent=' xxx test user agent' 

离线模式

offline=True

禁用或启用java_script_enabled

java_script_enabled=False

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

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

相关文章

初识C++(二)

六、引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 通俗地讲,可以理解为一个人能够拥有多个称呼,这些所有的称呼都是表示这一…

上海市计算机学会竞赛平台2024年12月月赛丙组查找 404

题目描述 Eve 有一个字符串 SS,该字符串仅由字符 *、4 和 0 组成。字符 * 可以被替换为 4 或 0。 Eve 想要计算在所有可能通过替换 * 生成的字符串中,包含子序列 404 的总数。由于这个数字可能非常大,你需要其输出模 10971097 的结果。 例…

【RedisStack】Linux安装指南

【RedisStack】Linux安装指南.md 前言下载解压创建启动文件设置密码把密码设置到环境变量启动/停止相关命令测试&验证官网资料参考资料 前言 Redis Stack是使用Redis的最佳起点。我们将我们必须提供的最好的技术捆绑在一起,形成一个易于使用的软件包。Redis St…

达梦8-DMSQL程序设计学习笔记1-DMSQL程序简介

1、DMSQL程序简介 DMSQL程序是达梦数据库对标准SQL语言的扩展,是一种过程化SQL语言。在DMSQL程序中,包括一整套数据类型、条件结构、循环结构和异常处理结构等,DMSQL程序中可以执行SQL语句,SQL语句中也可以使用DMSQL函数。 DMSQ…

STM32 FreeRTOS 基础知识

多任务处理 内核是操作系统的核心组件。诸如 Linux 这样的操作系统采用的内核, 看似允许用户同时访问计算机。很明显,多个用户可以同时执行多个程序。 每个执行程序都是受操作系统控制的任务(或线程)。如果一个操作系统能够以这…

商用车电子电气零部件电磁兼容条件和试验(2)—术语和定义

写在前面 本系列文章主要讲解商用车电子/电气零部件或系统的传导抗干扰、传导发射和辐射抗干扰、电场辐射发射以及静电放电等试验内容及要求,高压试验项目内容及要求。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 目录 商用车电子电气…

计算机视觉与深度学习 | 使用深度学习来训练基于视觉的车辆检测器(matlab源码-faster RCNN)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== faster RCNN训练一个深度学习车辆检测器 下载预训练检测器加载数据集创…

T-SQL编程

目录 1、T-SQL的元素 1.1 标识符 1. 常规标识符 2. 分隔标识符 1.2 变量 1. 全局变量 2. 局部变量 1.3 运算符 1. 算数运算符 2. 赋值运算符 3. 位运算符 4. 比较运算符 5. 逻辑运算符 6. 字符串连接运算符 7. 一元运算符 8. 运算符的优先级和结合性 1.4 批处…

如何将原来使用cmakelist编译的qt工程转换为可使用Visual Studio编译的项目

将原来使用CMakeLists.txt编译的Qt工程转换为可使用Visual Studio编译的项目,可以通过以下步骤实现: 一、准备阶段 安装必要的软件: 确保已安装Visual Studio,并选择了C开发相关的组件。安装CMake,并确保其版本与Qt和…

js中的Object.defineProperty()详解

文章目录 一、Object.defineProperty()二、descriptor属性描述符2.1、数据描述符2.2、访问器描述符2.3、descriptor属性2.3.1、value2.3.2、writable2.3.3、enumerable (可遍历性)2.3.4、configurable (可配置性) 三、注意事项 一…

【搭建JavaEE】(2)Tomcat安装配置和第一个JavaEE程序

Tomcat–容器(Container) 下载 Apache Tomcat - Welcome! 下载完成 请求/响应 结构 测试 查看Jdk版本 改端口号localhost8080–>8099 学学人家以后牛逼了可以用自己名字当文件夹名 配置端口8099 找到server文件 用记事本打开 再打开另一个logging文件 ”乱码解决“步骤&…

RPC 源码解析~Apache Dubbo

解析 RPC(远程过程调用)的源码可以帮助你深入理解其工作原理和实现细节。为了更好地进行源码解析,我们选择一个流行的 RPC 框架——Apache Dubbo 作为示例。Dubbo 是一个高性能、轻量级的开源 Java RPC 框架,广泛应用于企业级应用…

centos7.6 安装nginx 1.21.3与配置ssl

1 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2 下载Nginx wget http://nginx.org/download/nginx-1.21.3.tar.gz3 安装目录 mkdir -p /data/apps/nginx4 安装 4.1 创建用户 创建用户nginx使用的nginx用户。 #添加www组 # groupa…

高级软件工程-复习

高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…

TrollFools 2.10-22 插件注入工具 官方版

《TrollFools巨魔设备专用插件注入工具》这是一款专为巨魔设备打造的插件注入神器,功能强大且操作便捷。它能够轻松地将插件注入通过AppStore商店下载的任意APP中,同时也能随时卸载,丝毫不影响APP的正常使用。注入后的APP仍可正常更新&#x…

30分钟内搭建一个全能轻量级springboot 3.4 + 脚手架 <1> 5分钟快速创建一个springboot web项目

快速导航 <1> 5分钟快速创建一个springboot web项目 <2> 5分钟集成好最新版本的开源swagger ui&#xff0c;并使用ui操作调用接口 <3> 5分钟集成好druid并使用druid自带监控工具监控sql请求 <4> 5分钟集成好mybatisplus并使用mybatisplus generator自…

软考信安20~数据库系统安全

1、数据库安全概况 1.1、数据库安全概念 数据库是网络信息系统的基础性软件,承载着各种各样的数据,成为应用系统的支撑平台。 国外主流的数据库系统有MSSQL 、MySQL 、Oracle 、DB2 等,国产数据库系统主要有人大金仓、达梦等。 1.2、数据库安全威胁 授权的误用(Misuses…

Python脚本自动发送电子邮件

要编写一个Python脚本来自动发送电子邮件&#xff0c;你可以使用smtplib库来处理SMTP协议&#xff0c;以及email库来构建邮件内容。 安装必要的库 通常情况下&#xff0c;smtplib和email库是Python标准库的一部分&#xff0c;因此不需要额外安装。如果你使用的是较旧的Python版…

按键精灵ios越狱脚本教程:多选框联动的ui界面

以下是一个简单的 iOS 代码示例&#xff0c;使用 Swift 语言来创建一个包含多选框&#xff08;复选框&#xff09;的 UI 界面&#xff0c;并实现联动效果。 import UIKitclass ViewController: UIViewController {let checkbox1 UIButton(type:.system)let checkbox2 UIButt…

arcgis中生成格网矢量带高度

效果 1、数据准备 (1)矢量边界(miain.shp) (2)DEM(用于提取格网标高) (3)DSM(用于提取格网最高点) 2、根据矢量范围生成格网 模板范围选择矢量边界,像元宽度和高度根据坐标系来输入,我这边是4326的,所以输入的是弧度,输出格网矢量gewang.shp 3、分区统计 …