playwright连接已有浏览器操作

  •  📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢交流讨论:欢迎加入我们一起学习!
  • 📢资源分享:耗时200+小时精选的「软件测试」资料包
  • 📢 软件测试学习教程推荐:火遍全网的《软件测试》教程


前置准备

# 安装playwright的python版本
pip install playwright  
# 安装playwright自带的浏览器和ffmepg,此步骤耗时较长
playwright install  

打开本地已有缓存的Chrome(理解)

之前有写过一篇selenium打开指定浏览器进行自动化操作的文章(链接见后文),但那篇需要自己通过bat文件去启动浏览器。而且还要下载对应的驱动。

playwright就不需要下载驱动,它自己有,你浏览器版本可以不用管了,而且这个时候,你可以通过launch_persistent_context方法直接在代码中添加已有缓存的谷歌浏览器,并且指定端口打开,你以后全部由代码来跑就可以了。
 

# -*- coding: utf-8 -*-
'''
@Time : 2023/4/28 12:29
@Author : Vincent.xiaozai
@Email : Lvan826199@163.com
@File : playwright_demo1.py
'''
__author__ = "梦无矶小仔"import timefrom playwright.sync_api import Playwright,sync_playwright
# C:\Users\xiaozai\AppData\Local\ms-playwright
with sync_playwright() as playwright:browser = playwright.chromium.launch_persistent_context(# 指定本机用户缓存地址user_data_dir=r"C:\Users\xiaozai\AppData\Local\Google\Chrome\User Data",# 指定本机google客户端exe的路径executable_path=r"C:\Users\xiaozai\AppData\Local\Google\Chrome\Application\chrome.exe",# 要想通过这个下载文件这个必然要开  默认是Falseaccept_downloads=True,# 设置不是无头模式headless=False,bypass_csp=True,slow_mo=10,# 跳过检测args = ['--disable-blink-features=AutomationControlled','--remote-debugging-port=9222'])page = browser.new_page()page.goto("https://www.baidu.com/")print(page.title())time.sleep(200)browser.close()

user_data_dir:此文件夹就是你电脑本地所在的缓存文件夹,可以是系统默认的,也可以是你自己新建的

args处常用参数请参考下表。

launch_persistent_context可填参数可以查看源码,playwright -> sync_api -> _generated.py

运行效果展示:

看到右上角了吗?是登陆状态的,说明加载了我的用户信息,你可以打开一个新的标签页,你还会发现里面有你的标签。

指定端口打开浏览器
就字面意思,emmmm,貌似目前我还没有遇到需要用这个的场景。还是用前面那个方法结合着用好

from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
# 指定端口打开浏览器
browser = playwright.chromium.launch(headless=False, args=['--remote-debugging-port=9001'])
time.sleep(10)
page = browser.new_page()
page.goto("https://www.baidu.com/")
print(page.title())
time.sleep(10)
browser.close()

连接指定端口已启动浏览器(推荐)
这个方案就是不使用launch_persistent_context方法,需要自己手动启动一个浏览器(或者使用命令),之后让playwright连接上这个浏览器进行自动化操作。

「前置操作」

需要通过命令启动一个特定的浏览器,这里我做了一个bat文件,详细方法参考之前的文章:
 

@echo off
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenium\AutomationProfile"

 我们先通过该命令快捷启动浏览器,之后就可以通过代码连接上该浏览器了。

# 可以使用bat手动打开该浏览器,也可以通过如下命令打开
command = r"C:\Users\xiaozai\AppData\Local\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir=C:\selenium\AutomationProfile"
subprocess.Popen(command)
time.sleep(5)playwright = sync_playwright().start()
# 连接已打开浏览器,找好端口
browser = playwright.chromium.connect_over_cdp("http://127.0.0.1:9222")
default_context = browser.contexts[0] # 注意这里不是browser.new_page()了
page = default_context.pages[0]
page.goto("https://www.baidu.com/")
print(page.title()) #百度一下,你就知道

后面打开page这里为什么是这样写呢?我抄的源码示列的,诶嘿嘿

关键字:浏览器上下文

 最后启动的浏览器效果和前面的展示效果都是一样的 


最后我邀请你进入我们的软件测试学习交流群, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

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

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

相关文章

虹科技术 | 数字变电站的远程自动化测试:新时代的电力安全策略

导读:随着工业和关键系统对网络安全的要求越来越高,采用多层方法来应对各种安全威胁变得至关重要。本篇文章将重点介绍RELY-TEST如何运用于数字变电站网络安全测试,以及其如何提高电力系统的安全性和效率。 网络安全对于工业和关键系统来说都…

GAMES101:作业3记录

文章目录 总览使用框架代码说明运行与结果代码实现rasterize_triangle(const Triangle& t)的实现get_projection_matrix()的实现phong_fragment_shader()的实现texture_fragment_shader()的实现bump_fragment_shader()的实现displacement_fragment_shader()的实现尝试其他的…

Https加密超文本传输协议的运用

证书是自定义颁发。私立密钥(因此访问某些网站会显示网站不安全) 拖入docker-compose docker-harbor 安装包mv docker-com... docker-compose mv docker-compose /usr/local/bin/ chmod 777 /usr/local/bin/docker-compose安装dockertar -xf harbor…

一文搞懂设计模式之建造者模式

大家好,我是晴天,我们又见面了,这周我们继续学习一文搞懂设计模式系列,本周将一起学习建造者模式(生成器模式) 什么是建造者模式 建造者模式(也称为生成器模式)是一种创建型设计模式…

【MySQL】:事务(下)

事务 一.MVCC机制(读-写)1.预备知识1.三个记录隐藏字段2.undo日志 2.模拟MVCC3.Read View4.整体流程 二.RC与RR的本质区别1.当前读和快照读在RR级别下的区别1.测试一2.测试二 2.RR 与 RC的本质区别 数据库并发的场景有三种: 读-读 :不存在任何问题&…

【六大排序详解】中篇 :选择排序 与 堆排序

选择排序 与 堆排序 选择排序 选择排序 与 堆排序1 选择排序1.1 选择排序原理1.2 排序步骤1.3 代码实现 2 堆排序2.1 堆排序原理2.1.1 大堆与小堆2.1.2 向上调整算法2.1.3 向下调整算法 2.2 排序步骤2.3 代码实现 3 时间复杂度分析 Thanks♪(・ω・)&#…

Vue在页面上添加水印

第一步:在自己的项目里创建一个js文件;如图所示我在在watermark文件中创建了一个名为waterMark.js文件。 waterMark.js /** 水印添加方法 */ let setWatermark (str1, str2) > {let id 1.23452384164.123412415if (document.getElementById(id) …

WPF中数据绑定转换器Converter

使用场景:ViewModel中的数据如果跟View中的数据类型不匹配。 下面是以int类型调控是否可见为例子 步骤一:创建转换器类 在xaml中查看Converter的定义可以知道Converter是一个接口类型,因此转换器的类定义需要使用这个接口 internal class Vi…

计算机视觉技术-使用图像增广进行训练

让我们使用图像增广来训练模型。 这里,我们使用CIFAR-10数据集,而不是我们之前使用的Fashion-MNIST数据集。 这是因为Fashion-MNIST数据集中对象的位置和大小已被规范化,而CIFAR-10数据集中对象的颜色和大小差异更明显。 CIFAR-10数据集中的前…

如何使用Docker部署Dashy并无公网ip远程访问管理界面

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…

不同参数规模大语言模型在不同微调方法下所需要的显存总结

原文来自DataLearnerAI官方网站: 不同参数规模大语言模型在不同微调方法下所需要的显存总结 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051703254378255 大模型的微调是当前很多人都在做的事情。微调可以让大语言模型适应特定领域的任…

WordPress主题大前端DUX v8.3源码下载

DUX主题8.3版本更新内容: 新增:Cloudflare Turnstile 免费验证功能 新增:子菜单页面模版,支持多级页面 新增:手机端文章内表格自动出现横向滚动条,可集体或单独设置滚动宽度 新增:标签云页面模版…