首页 > 其他分享 >playwright连接已有浏览器操作

playwright连接已有浏览器操作

时间:2023-08-03 19:32:26浏览次数:39  
标签:playwright 浏览器 sync page disable 连接 browser



文章目录

  • playwright连接已有浏览器操作
  • 前置准备
  • 打开本地已有缓存的Chrome(理解)
  • 指定端口打开浏览器
  • 连接指定端口已启动浏览器(推荐)


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 : [email protected]
@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浏览器启动参数大全(命令行参数) - 故人与猫 -

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

playwright连接已有浏览器操作_python

运行效果展示(莫名其妙,一张百度的首页图片都说我违规,大家自己运行下代码就能看到效果):
看到右上角了吗?是登陆状态的,说明加载了我的用户信息,你可以打开一个新的标签页,你还会发现里面有你的标签。

指定端口打开浏览器

就字面意思,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:

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

关键字:浏览器上下文

playwright连接已有浏览器操作_缓存_02


标签:playwright,浏览器,sync,page,disable,连接,browser
From: https://blog.51cto.com/u_15800928/6952318

相关文章

  • 记录一下Linux下远程访问Mysql连接不上,报错The driver has not received any packets
    问题所在远程服务器已经提前安装好了MySQL,版本也是对应的。在ssh上可以正常进入MySQL数据库。但是其他地方无法连接上,例如navicat和IDE内部都发生报错。排查1.首先排查了一下远程服务器上mysql服务状态是否处于正常运行状态sudoservicemysqldstatus没有发生问题。2.检......
  • 解决Tomcat数据连接池无法释放
    近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会再次出现无法登录的情况。今天上午,开......
  • webpack5 devServer浏览器打开显示 can not get
    webpack5中通过使用webpack-dev-server插件,配置devServer来浏览器启动页面,对于单页面,我们可以直接配置打开首页,多页面,可以配置打开一个文件目录,选择各个页面的目录当我们配置好webpack后,执行npmrundev,浏览器打开经常会看到显示  cannotget,即无法匹配服务器匹配的目......
  • PlayWright(二十三)- allure插件(二)
    在上文中,我们认识了allure插件,并且也成功使用了,但是感觉少点东西,所以我们再深入挖掘下allure的功能  1.allure增加测试用例详情 1、导入allure模块2、在每条用例函数前加上@allure.title("标题内容")3、正常执行生成allure报告执行结果:2.allure增加测试用例描述用......
  • playwright与cypress对比,各有什么优势与劣势
    Playwright和Cypress都是用于自动化测试的工具,但它们在一些方面有所不同。Playwright的优势:跨浏览器支持:Playwright支持多种浏览器,包括Chrome、Firefox和Safari等,可以在不同浏览器上运行测试,提高覆盖率。多语言支持:Playwright支持多种编程语言,包括JavaScript、Python和C#等,使......
  • 百度统一socket长连接组件从0到1的技术实践
    本文由百度消息中台团队分享,引用自百度Geek说,原题“百度iOS端长连接组件建设及应用实践”,为了帮助理解,本文有修订和改动。1、引言在过去的十年里,移动端互联网技术飞速发展,移动应用逐渐成为主要的便捷访问和使用互联网的方式,它们承接了越来越多的业务和功能,这也意味着对移动端......
  • 国标GB28181平台LntonGBS(源码版)国标视频平台在连接MySQL数据库时提示“can’t connect
    LntonGBS国标视频云服务平台不仅支持无缝、完整接入内网或者公网的国标设备,还能够实现全平台、全终端输出。该平台支持将GB/T28181的设备/平台推送的PS流转成ES流,并提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现Web浏览器、手机浏览器、微信端、PC客户端等各终......
  • 监测浏览器是否打开调试模式并禁用调试
      setInterval(function(){check()},4000);varcheck=function(){functiondoCheck(a){if((""+a/a)["length"]!==1||a%20===0){(function(){}["constructor"]("debugger")())}else{(function(){}[......
  • uniapp 之h5修改全局滚动条(浏览器下滑有小矩形滚动条)
    在index.html文件里<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,user-scalable=no,initial-......
  • play连接mongodb并进行查询测试
    环境准备1、 IP白名单分组添加2、 相关配置信息 application.conf增加 morphia.db.name=库名morphia.db.url=连接信息dependencies.yml增加require:-playmongo->playmongolatest.integration-org.mongodb->mongo-java-driver3.12.13-org.mongodb.m......