playwright连接已有浏览器操作

2023-11-07

playwright连接已有浏览器操作

前置准备

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

打开本地已有缓存的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 time

from 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",
        # 要想通过这个下载文件这个必然要开  默认是False
        accept_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处可以填的参数介绍如下

List of Chromium Command Line Switches « Peter Beverloo

中文版:Chrome浏览器启动参数大全(命令行参数) - 故人与猫 - 博客园 (cnblogs.com)

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

序号 参数 说明
1 –allow-outdated-plugins 不停用过期的插件。
2 –allow-running-insecure-content 默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。
3 –allow-scripting-gallery 允许拓展脚本在官方应用中心生效。默认情况下,出于安全因素考虑这些脚本都会被阻止。
4 –disable-desktop-notifications 禁用桌面通知,在 Windows 中桌面通知默认是启用的。
5 –disable-file-system 停用 FileSystem API。
6 –disable-preconnect 停用 TCP/IP 预连接。
7 –disable-remote-fonts 关闭远程字体支持。SVG 中字体不受此参数影响。
8 –disable-web-security 不遵守同源策略。
9 –disk-cache-dir 将缓存设置在给定的路径。
10 –disk-cache-size 设置缓存大小上限,以字节为单位。
11 –dns-prefetch-disable 停用DNS预读。
12 –enable-print-preview 启用打印预览。
13 –extensions-update-frequency 设定拓展自动更新频率,以秒为单位。
14 –incognito 让浏览器直接以隐身模式启动。
15 –keep-alive-for-test 最后一个标签关闭后仍保持浏览器进程。(某种意义上可以提高热启动速度,不过你最好得有充足的内存)
16 –kiosk 启用kiosk模式。(一种类似于全屏的浏览模式)
17 –lang 使用指定的语言。
18 –no-displaying-insecure-content 默认情况下,https 页面允许从 http 链接引用图片/字体/框架。添加这一参数会阻止这些内容。
19 –no-referrers 不发送 Http-Referer 头。
20 –no-startup-window 启动时不建立窗口。
21 –proxy-server 使用给定的代理服务器,这个参数只对 http 和 https 有效。
22 –start-maximized 启动时最大化。
23 –single-process 以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)。
24 –user-agent 使用给定的 User-Agent 字符串。
25 –process-per-tab 每个分页使用单独进程。
26 –process-per-site 每个站点使用单独进程。
27 –in-process-plugins 插件不启用单独进程。
28 –disable-popup-blocking 禁用弹出拦截。
29 –disable-javascript 禁用JavaScript。
30 –disable-java 禁用Java。
31 –disable-plugins 禁用插件。
32 –disable-images 禁用图像。
33 –remote-debugging-port 在指定端口上启用HTTP远程调试

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文件,详细方法参考之前的文章:

CSDN:https://blog.csdn.net/qq_46158060/article/details/122211988

公众号:Python+selenium定位已打开的谷歌浏览器 (qq.com)

@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这里为什么是这样写呢?我抄的源码示列的,诶嘿嘿

关键字:浏览器上下文

请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

playwright连接已有浏览器操作 的相关文章

随机推荐

  • 数组链表堆栈和队列

    转自 http blog csdn net tm wb article details 6319146 数组链表堆栈和队列 数组链表堆栈和队列是最基本的数据结构 任何程序都会涉及到其中的一种或多种 1数组 数组是最最基本的数据结构 很多语言
  • stream对多个字段分组_Java8 stream 中利用 groupingBy 进行多字段分组求和案例

    Java8的groupingBy实现集合的分组 类似Mysql的group by分组功能 注意得到的是一个map 对集合按照单个属性分组 分组计数 排序 List items Arrays asList apple apple banana
  • html代码雨特效代码,简易代码雨特效

    window onload function 获取画布对象 var canvas document getElementById canvas 获取画布的上下文 var context canvas getContext 2d 获取浏览器屏
  • CentOS dstat 命令详解(二)参数详解

    CPU相关参数 l load 展示1分钟 5分钟和15分钟内的平均负载 c cpu 展示cpu状态 usr用户占比 sys系统占比 idl空闲占比 wai等待次数 这四个加和是100 hiq硬中断次数 siq软中断次数 C 必须和 c配合使
  • prometheus-basic_auth加密配置

    文章目录 前言 一 basic auth加密的引入 二 使用步骤 1 生成basic auth密钥 2 将密钥文件写入config yml文件内 3 查看prometheus相关参数 4 修改prometheus配置 5 启动服务 5 1
  • 为什么Java中只有值传递?

    1 必知概念 实参 方法被调用时传入的实际值 形参 在定义方法时括号内定义的参数列表即为形参 它用来接收方法调用时传入的实参 值传递 当方法被调用时 实参通过形参将其副本传入方法内 接下来对形参的操作就是在对实参副本的操作 并不会影响实参本
  • ​​​​​​​自动化批量漏洞扫描脚本定制

    github上找到一款并发框架 POC T https github com Xyntax POC T 可以优美的进行并发操作 上面所述的内容大多可以用插件联合POC T进行 因为POC T不能一次使用多个插件 于是笔者对POC T框架进行
  • Xshell5登录报“找不到匹配的host key 算法“的错误

    Xshell5登录报 找不到匹配的host key 算法 的错误 现象 解决方法一 解决方法二 现象 xshell5登录欧拉22 03时报错 找不到匹配的host key 算法 解决方法一 1 编辑 etc ssh sshd config
  • win10电脑任务栏右侧小图标消失解决方法

    WIN10系统任务栏 左边是窗口键和快捷图标 右边是时钟 系统喇叭 网线连接图标 任务栏左边没问题 窗口键和快捷图标都良好 右侧的系统图标无显示 只显示任务栏的底色 尝试操作隐藏任务栏再开启任务栏后 图标恢复正常了 再点击右侧任务栏任意图标
  • 网络环路导致公司网络瘫痪问题排查

    问题 公司网络突然很不稳定 跟踪发现大量丢包 问题排查 1 怀疑电信网络 设备有问题 联系电信经理 安排工程人员过来排查 排查发现入户网络正常 更换电信入户光猫后网络还是不稳定 还是大量丢包 2 机房排查 2 1 关闭所有交换机 然后再一台
  • Anaconda换国内源(清华源、中科大源)

    命令行执行 Windows下 Anaconda 清华源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda config
  • PPP协议实现透明传输的2种方法以及工作状态

    文章目录 1 PPP协议帧格式 2 字节填充 2 1 零比特填充方法 不使用序号和确认机制 PPP协议的工作状态 1 PPP协议帧格式 7E 十六进制数0x7E 在PPP协议里代表帧头和帧尾 二进制表示为0111 1110 占一个子节 FF
  • 机器学习SVM函数

    目录 1 SVM的损失函数 2 SVM的核方法 2 1 什么是核函数 2 1 1 核函数概念 2 1 2 核函数举例 2 1 2 1 核方法举例1 2 1 2 2 核方法举例2 2 2 常见核函数 2 3 小结 3 SVM回归 1 SVM的
  • springboot的负载均衡

    springboot的负载均衡 eueka作为注册中心 负载均衡使用的是Ribbon Ribbon负载均衡的策略有轮询 重试 权重 默认轮询 这是它独特的算法去调用具体的服务 在消费者启动动类中加上 Bean LoadBalanced pu
  • C++ 机房预约系统(七):老师模块——老师登录和注销、查看所有预约功能、审核预约功能的具体实现

    9 教师模块 在这个模块中 登录和注销和管理员与学生的实现一样 查看所有预约也和学生的查看所有预约实现一样 审核预约基本上和学生的取消预约一样 不同的是 学生模块 是通过学号和预约状态找到可以取消的预约记录 在老师模块 是通过预约状态找到可
  • Ik分词器(自定义分词-mysql)

    引言 ik分词器的分词范围不够广泛 某些特定行业的专业用语分词能力就不够了 此时就需要自定义分词 与停顿词 1 下载ik分词器源码 git地址 https github com medcl elasticsearch analysis ik
  • Lombok 的正确使用姿势

    文章目录 1 Lombok 是什么 2 安装 Lombok 3 Spring Boot 集成 Lombok 4 使用 Lombok 4 1 注解一览表 4 2 部分使用介绍 Getter lazy true Value Builder Su
  • R语言基本统计分析——抽样

    R语言基本统计分析 抽样 简单随机抽样 简单随机抽样是指从数据总体中任意抽取指定数量的数据作为样本 其中每个可能被抽取中的样本概率相等 可以用R语言中的sample 函数进行随机抽样 抽取方法分为 重置抽样 不重置抽样 R语言命令为 sam
  • Ubuntu 18.04 配置ibus中文拼音输入法(超简单)

    Ubuntu 18 04系统想安装中文输入法 利用ibus输入法配置 只要三步 注意 你的Ubuntu需要可以上网 因为要下载一系列安装包 第一步 首先需要给Ubuntu18 04安装Chinese语言包支持 先打开Settings窗口 g
  • playwright连接已有浏览器操作

    文章目录 playwright连接已有浏览器操作 前置准备 打开本地已有缓存的Chrome 理解 指定端口打开浏览器 连接指定端口已启动浏览器 推荐 playwright连接已有浏览器操作 前置准备 pip install playwrig