【Python3】自动化测试_用Playwright操作浏览器

创建浏览器实例

# 启动浏览器实例
myBrowser = myPlaywright.chromium.launch(headless=False)
# myBrowser = myPlaywright.firefox.launch(headless=False)
# myBrowser = myPlaywright.webkit.launch(headless=False)

        args < List [ str ] >传递给浏览器实例的附加参数。

        channel < str >浏览器分发渠道。支持的值为“chrome”、“chrome-beta”、“chrome-dev”、“chrome-canary”、“msedge”、“msedge-beta”、“msedge-dev”、“msedge-canary”。阅读有关使用Google Chrome 和 Microsoft Edge的更多信息。

        chromium_sandbox < bool >启用 Chromium 沙盒。默认为false.

        devtools < bool > Chromium-only是否为每个选项卡自动打开开发者工具面板。如果这个选项是,该选项将被设置。

        downloads_path < Union [ str , pathlib.Path ] >如果指定,则将接受的下载下载到此目录中。否则,会在浏览器关闭时创建并删除临时目录。在任何一种情况下,当创建它们的浏览器上下文关闭时,下载都会被删除。

        env <字典[ str , str | 浮动| bool ] >指定对浏览器可见的环境变量。默认为process.env.

        executable_path < Union [ str , pathlib.Path ] >要运行的浏览器可执行文件的路径,而不是捆绑的。如果executable_path是相对路径,则相对于当前工作目录进行解析。请注意,Playwright 仅适用于捆绑的 Chromium、Firefox 或 WebKit,使用风险自负。

        firefox_user_prefs <字典[ str , str | 浮动| bool ] > Firefox 用户首选项。在 中了解有关 Firefox 用户首选项的更多信息about:config。

        handle_sighup < bool >在 SIGHUP 上关闭浏览器进程。默认为true.

        handle_sigint < bool >按Ctrl-C 关闭浏览器进程。默认为true.

        handle_sigterm < bool >在 SIGTERM 上关闭浏览器进程。默认为true.

        headless < bool >是否以无头模式运行浏览器。Chromium和Firefox的更多详细信息。默认为true除非devtools选项是true.

        ignore_default_args <布尔| List [ str ] >如果true,Playwright 不传递自己的配置参数,而只使用来自args. 如果给定一个数组,则过滤掉给定的默认参数。危险的选择;小心使用。默认为false.

        proxy <字典>网络代理设置。

                server < str >用于所有请求的代理。支持 HTTP 和 SOCKS 代理,例如http://myproxy.com:3128或socks5://myproxy.com:3128. 短格式myproxy.com:3128被视为 HTTP 代理。

                bypass < str >可选的以逗号分隔的域以绕过代理,例如".com, chromium.org, .domain.com".

                username < str > HTTP 代理需要身份验证时使用的可选用户名。

                password < str > HTTP 代理需要身份验证时使用的可选密码。

        slow_mo < float >将 Playwright 操作减慢指定的毫秒数。有用,以便您可以看到发生了什么。

        timeout < float >等待浏览器实例启动的最长时间(毫秒)。默认为30000(30 秒)。通过0禁用超时。

        traces_dir < Union [ str , pathlib.Path ] >如果指定,则将跟踪保存到此目录中。#

获取浏览器实例类型

        <BrowserType>获取浏览器所属的浏览器类型(chromium、firefox 或 webkit)。

# 获取浏览器所属的浏览器类型
print(myBrowser.browser_type)

获取浏览器实例状态

# 获取浏览器实例状态,True表示连接,False表示已关闭
print(myBrowser.is_connected())

关闭浏览器

        类似于强制退出浏览器。关闭浏览器及其所有页面,并清除属于此浏览器的所有已创建上下文并断开与浏览器服务器的连接,Browser对象本身被视为已释放,不能再使用。

# 关闭浏览器实例
myBrowser.close()

创建浏览器上下文

        创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookie/缓存。

# 创建新的浏览器上下文( 独立上下文环境,其运行资源是隔离的,保证互不干扰 )
myBrowserContext = myBrowser.new_context(viewport={"width":1920,"height":1080})

        accept_downloads:< bool >是否自动下载所有附件。默认为true接受所有下载的位置。

        base_url:< str >当使用page.goto(url, **kwargs) , page.route(url, handler, **kwargs) , page.wait_for_url(url, **kwargs) , page.expect_request(url_or_predicate, **kwargs) , 或page.expect_response(url_or_predicate, **kwargs)URL()它通过使用构造函数构建相应的 URL 来考虑基本URL。示例:

                baseURL: http://localhost:3000并导航到/bar.html结果http://localhost:3000/bar.html

                baseURL: http://localhost:3000/foo/并导航到./bar.html结果http://localhost:3000/foo/bar.html

                baseURL:http://localhost:3000/foo不带斜杠,并导航到./bar.html结果http://localhost:3000/bar.html

        bypass_csp:< bool >切换绕过页面的 Content-Security-Policy。

        color_scheme:< "light"|"dark"|"no-preference" >模拟'prefers-colors-scheme'媒体功能,支持的值为'light', 'dark', 'no-preference'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'light'.

        device_scale_factor:< float >指定设备比例因子(可以认为是dpr)。默认为1.

        extra_http_headers:< Dict [ str , str ] >包含要随每个请求一起发送的附加 HTTP 标头的对象。

        forced_colors:< "active"|"none" >模拟'forced-colors'媒体功能,支持的值为'active', 'none'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'none'.

        geolocation:<字典>

                latitude < float > -90 到 90 之间的纬度。

                longitude < float > -180 到 180 之间的经度。

                accuracy < float >非负精度值。默认为0.

        has_touch:< bool >指定视口是否支持触摸事件。默认为假。

        http_credentials:<字典> HTTP 身份验证的凭据。

                username < str >

                password < str >

        ignore_https_errors:< bool >发送网络请求时是否忽略 HTTPS 错误。默认为false.

        is_mobile:< bool >是否考虑meta viewport标签并启用触摸事件。默认为false. Firefox 不支持。

        java_script_enabled:< bool >是否在上下文中启用 JavaScript。默认为true.

        locale:< str >指定用户区域设置,例如en-GB,de-DE等。区域设置会影响navigator.language值、Accept-Language请求头值以及数字和日期格式规则。

        no_viewport:< bool >不强制固定视口,允许在头部模式下调整窗口大小。

        offline:< bool >是否模拟网络离线。默认为false.

        permissions:< List [ str ] >授予此上下文中所有页面的权限列表。有关详细信息,请参阅browser_context.grant_permissions(permissions, **kwargs)。

        proxy:< Dict >与此上下文一起使用的网络代理设置        。

                server < str >用于所有请求的代理。支持 HTTP 和 SOCKS 代理,例如http://myproxy.com:3128或socks5://myproxy.com:3128. 短格式myproxy.com:3128被视为 HTTP 代理。

                bypass < str >可选的以逗号分隔的域以绕过代理,例如".com, chromium.org, .domain.com".

                username < str > HTTP 代理需要身份验证时使用的可选用户名。

                password < str > HTTP 代理需要身份验证时使用的可选密码。

对于 Windows 上的 Chromium,需要使用全局代理启动浏览器才能使此选项起作用。如果所有上下文都覆盖代理,则永远不会使用全局代理,并且可以是任何字符串,例如launch({ proxy: { server: 'http://per-context' } }).

        record_har_content:< "omit"|"embed"|"attach" >控制资源内容管理的可选设置。如果omit指定,内容不会被持久化。如果attach指定,资源将作为单独的文件保存,并且所有这些文件都与 HAR 文件一起存档。默认为embed,它根据 HAR 规范将内容存储在 HAR 文件中。

        record_har_mode:< "full"|"minimal" >当设置为 时minimal,仅记录从 HAR 路由所需的信息。这省略了从 HAR 重放时未使用的大小、时间、页面、cookie、安全性和其他类型的 HAR 信息。默认为full.

        record_har_omit_content:< bool >控制是否从 HAR 中省略请求内容的可选设置。默认为false.

        record_har_path:< Union [ str , pathlib.Path ] >将所有页面的HAR记录到文件系统上的指定HAR文件中。如果未指定,则不记录 HAR。确保调用browser_context.close()以保存 HAR。

        record_har_url_filter:<字符串| 图案>

        record_video_dir:< Union [ str , pathlib.Path ] >将所有页面的视频录制到指定目录中。如果未指定,则不会录制视频。确保调用browser_context.close()来保存视频。

        record_video_size:<字典>录制视频的尺寸。如果未指定,大小将等于viewport缩小以适应 800x800。如果viewport未明确配置,则视频大小默认为 800x450。如有必要,每页的实际图片将按比例缩小以适合指定尺寸。#

                width < int >视频帧宽度。

                height < int >视频帧高度。

        reduced_motion:< "reduce"|"no-preference" >模拟'prefers-reduced-motion'媒体功能,支持的值为'reduce', 'no-preference'. 有关更多详细信息,请参阅page.emulate_media(**kwargs)。默认为'no-preference'. #

        screen:< Dict >模拟通过window.screen. 仅在viewport设置 时使用。#

                width < int >页面宽度(以像素为单位)。

                height < int >页面高度(以像素为单位)。

        service_workers:< "allow"|"block" >是否允许站点注册 Service Worker。默认为'allow'. #

                'allow': Service Worker可以注册。

                'block': Playwright 将阻止所有 Service Worker 的注册。

        storage_state:<联合[ str , pathlib.Path ] | Dict >使用给定的存储状态填充上下文。此选项可用于使用通过browser_context.storage_state(**kwargs)获得的登录信息初始化上下文。保存存储的文件的路径,或具有以下字段的字典:#

  • cookies: <List[Dict]>
    • sameSite <"Strict"|"Lax"|"None">
    • secure: <bool>
    • httpOnly: <bool>
    • expires: < float > Unix 时间,以秒为单位。
    • path: < str >
    • domain: < str >
    • value: < str >
    • name: < str >
  • origins <List[Dict]>
    • origin < str >
    • localStorage <List[Dict]>
    • name < str >
    • value < str >

        strict_selectors:< bool >如果指定,则为此上下文启用严格选择器模式。在严格选择器模式下,当多个元素与选择器匹配时,对选择器暗示单个目标 DOM 元素的所有操作都将抛出。请参阅定位器以了解有关严格模式的更多信息。#

        timezone_id:< str >更改上下文的时区。有关支持的时区 ID 列表,请参阅ICU 的 metaZones.txt。#

        user_agent:< str >在此上下文中使用的特定用户代理。#

        viewport:<无类型| Dict >为每个页面设置一致的视口。默认为 1280x720 视口。no_viewport禁用固定视口。#

                width < int >页面宽度(以像素为单位)。

                height < int >页面高度(以像素为单位)。

获取所有浏览器上下文

        <List[BrowserContext]>,返回所有打开的浏览器上下文的数组。在新创建的浏览器中,这将返回零浏览器上下文。

# 获取所有浏览器上下文
print(myBrowser.contexts)

cookie的获取、添加、清理

# 获取 cookies
allCookies = myBrowserContext.cookies()
# 添加 cookies
myBrowserContext.add_cookies(allCookies)
# 清理 cookies
myBrowserContext.clear_cookies()

  • 获取myBrowserContext.cookies()

        urls <字符串| List [ str ] > URL 的可选列表。#

        返回: <列表[字典] > #

                name < str >

                value < str >

                domain < str >

                path < str >

                expires < float > Unix 时间,以秒为单位。

                httpOnly <布尔>

                secure <布尔>

                sameSite <"Strict"|"Lax"|"None">

        如果未指定 URL,则此方法返回所有 cookie。如果指定了 URL,则仅返回影响这些 URL 的 cookie。

  • 添加 myBrowserContext.add_cookies()

        cookies <列表[字典] > #

                name < str >

                value < str >

                url < str > url 或域/路径是必需的。可选的。

                domain < str > url 或 domain/path 都是必需的 可选的。

                path < str > url 或 domain/path 都是必需的 可选的。

                expires < float > Unix 时间,以秒为单位。可选的。

                httpOnly < bool >可选。

                secure < bool >可选。

                sameSite <"Strict"|"Lax"|"None">可选。

        返回: <无类型> #

  • 清理myBrowserContext.clear_cookies()

创建新页面

        在新的浏览器上下文中创建一个新页面。关闭此页面也会关闭上下文。

# 在新的浏览器上下文中创建一个新页面。关闭此页面也会关闭上下文。
myPage = myBrowserContext.new_page()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仓颉语言 -- 函数

1、定义函数 仓颉使用关键字 func 来表示函数定义的开始&#xff0c;func 之后依次是函数名、参数列表、可选的函数返回值类型、函数体。其中&#xff0c;函数名可以是任意的合法标识符&#xff0c;参数列表定义在一对圆括号内&#xff08;多个参数间使用逗号分隔&#xff09;…

PyTorch论文

2019-12 PyTorch: An Imperative Style, High-Performance Deep Learning Library 设计迎合4大趋势&#xff1a; 1. array-based (Tensor) 2. GPU加速 3. 自动求导 (Auto Differentiation) 4. 拥抱Python生态 4大设计原则&#xff1a; 1. 使用算法和数据开发者熟悉的Python做编…

【Python学习笔记】:Python爬取音频

【Python学习笔记】&#xff1a;Python爬取音频 背景前摇&#xff08;省流可以不看&#xff09;&#xff1a; 人工智能公司实习&#xff0c;好奇技术老师训练语音模型的过程&#xff0c;遂请教&#xff0c;得知训练数据集来源于爬取某网页的音频。 很久以前看B站同济子豪兄的《…

开源AI生成连续一致性儿童故事书; GraphRAG结合本地版Ollama;AI辅助老年人用餐;开源无代码AI工作流VectorVein

✨ 1: SEED-Story SEED-Story 是一种能生成包含一致性图像的多模态长篇故事的机器学习模型&#xff0c;配套数据集已开放。 SEED-Story 是一种多模态长故事生成模型&#xff0c;具备生成包含丰富且连贯的叙事文本和一致性高的人物和风格图像的能力。此模型基于 SEED-X 构建。…

找到完美的横道图工具:2024年选择指南

国内外主流的10款项目进度横道图软件对比&#xff1a;PingCode、Worktile、灵动计划&#xff08;Wolai&#xff09;、飞书项目、Tapd、麦客CRM、Asana、Trello、Smartsheet、Basecamp。 在管理项目时&#xff0c;确保所有进度和任务都按计划进行是每个项目经理面临的一大挑战。…

iSAM: Incremental Smoothing and Mapping

文章目录 iSAM原理主要思想问题描述求解方法增量求解增量更新增量因式分解(基于[Givens Rotations](https://blog.csdn.net/weixin_41469272/article/details/140245327)) 回环处理数据association变量组合协方差 补充知识COLAMD排序算法原理步骤 JVC assignment iSAM原理 论文…

QT--控件篇二

一、文本框 1. QLineEdit 文本框通常使用QLineEdit和QTextEdit这两个类来实现。 QLineEdit&#xff1a;用于单行文本输入。QTextEdit&#xff1a;用于多行文本输入&#xff0c;可以包含丰富的文本格式。 用setText(QString txt);设置默认的显示内容&#xff0c;用QString tex…

Spring-Cache 缓存

1.简介 2.SpringCache 整合 简化缓存开发 1.导入依赖 <!-- spring cache --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>2.redis 作为缓存…

c#与欧姆龙PLC通信——如何更改PLC的IP地址

前言 我们有时候需要改变欧姆龙Plc的ip地址,下图有两种更改方式,一种是已知之前Plc设置的Ip地址,还有一种是之前不知道Pl的Ip地址是多少,下面分别做介绍。 1、已知PLC的IP地址的情况下更改地址 假设已知PLC的Ip地址,比如本文中PLC的IP为192.168.1.2,我首先将电脑的IP地…

宝塔面板以www用户运行composer

方式一 执行命令时指定www用户 sudo -u www composer update方式二 在网站配置中的composer选项卡中选择配置运行

ROS2从入门到精通5-1:详解代价地图与costmap插件编写(以距离场ESDF为例)

目录 0 专栏介绍1 代价地图介绍1.1 基本概念1.2 代价定义 2 代价地图配置2.1 通用配置2.2 障碍层配置2.3 静态层配置2.4 膨胀层配置 3 代价地图插件案例3.1 构造地图插件类3.2 注册并导出插件3.3 编译与使用插件 0 专栏介绍 本专栏旨在通过对ROS2的系统学习&#xff0c;掌握RO…

【格密码基础】旋转格的性质

目录 一. 回顾ZSVP问题 二. 基于ZSVP问题的密码系统 三. 格基旋转与Gram矩阵 四. 补充矩阵QR分解 4.1 矩阵分解 4.2 举例 前序文章请参考&#xff1a; 【格密码基础】详解ZSVP问题-CSDN博客 一. 回顾ZSVP问题 根据之前的讨论我们知道解决ZSVP问题的计算复杂度为&#x…

链路追踪系列-01.mac m1 安装zipkin

下载地址&#xff1a;https://hub.docker.com/r/openzipkin/zipkin jelexjelexxudeMacBook-Pro zipkin-server % pwd /Users/jelex/Documents/work/zipkin-server 先启动Es: 可能需要先删除 /Users/jelex/dockerV/es/plugins 目录下的.DS_Store 当端口占用时再次启动&#x…

PostgreSQL 中如何处理数据的并发读写和锁等待超时?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的并发读写和锁等待超时一、并发读写的基本概念&#xff08;一&#xff09;…

【日常记录】【插件】excel.js 的使用

文章目录 1. 引言2. excel.js2.1 创建工作簿和工作表2.2 excel文件的导出2.3 excel文件的导入2.4 列2.5 行2.6 添加行2.7 单元格2.8 给总价列设置自动计算(除表头行) 3. 总结参考链接 1. 引言 前端导出excel文件常用库一般是 excel.js 和 xlsx.js xlsx.js 导出数据确实方便&…

技术成神之路:设计模式(六)策略模式

1.介绍 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;封装每一个算法&#xff0c;并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。 2.主要作用 策略模式的主要作用是将算法或行为…

大数据基础:Hadoop之Yarn重点架构原理

文章目录 Hadoop之Yarn重点架构原理 一、Yarn介绍 二、Yarn架构 三、Yarn任务运行流程 四、Yarn三种资源调度器特点及使用场景 Hadoop之Yarn重点架构原理 一、Yarn介绍 Apache Hadoop Yarn(Yet Another Reasource Negotiator&#xff0c;另一种资源协调者)是Hadoop2.x版…

优化理论——迭代方法

线性回归建模 训练&#xff0c;预测 { ( x ( i ) , y ( i ) ) } \{(x^{(i)},y^{(i)})\} {(x(i),y(i))} ⼀个训练样本&#xff0c; { ( x ( i ) , y ( i ) ) ; i 1 , ⋯ , N } \{(x^{(i)},y^{(i)});i1,\cdots ,N\} {(x(i),y(i));i1,⋯,N} 训练样本集 { ( x 1 ( i ) , x 2 ( i…

爬虫管理解决方案:让数据收集变得高效且合规

一、为何数据收集的效率与合规性同等重要&#xff1f; 随着大数据技术的飞速发展&#xff0c;数据收集已成为企业决策与市场洞察的核心驱动力。然而&#xff0c;在信息海洋中精准捕捞的同时&#xff0c;如何确保这一过程既高效又不触碰法律的红线&#xff0c;是每个数据实践者…

vue实现动态图片(gif)

目录 1. 背景 2. 分析 3. 代码实现 1. 背景 最近在项目中发现一个有意思的小需求&#xff0c;鼠标移入一个盒子里&#xff0c;然后盒子里的图就开始动起来&#xff0c;就像一个gif一样&#xff0c;然后鼠标移出&#xff0c;再按照原来的变化变回去&#xff0c;就像变形金刚…