首页 > 编程语言 >python+playwright 学习-33.launch_persistent_context 启动本地 Google Chrome 并加载用户数据

python+playwright 学习-33.launch_persistent_context 启动本地 Google Chrome 并加载用户数据

时间:2023-03-16 10:33:07浏览次数:54  
标签:插件 playwright 浏览器 launch Chrome chrome Google

前言

playwright 启动Google Chrome 浏览器的时候默认用的是无痕模式,不加载本地的数据,这对于测试人员运行一个干净的浏览器是没问题的。
大家在学selenium的时候,知道 selenium 可以启动本地的 Google Chrome 浏览器并加载本地数据,这样可以在本地已经登录过网站的情况下,下次打开网站不需要登录继续操作,对于一些爬虫用户是非常重要的功能。
playwright 可以使用launch_persistent_context方法启动本地的chrome 浏览器

selenium 加载 Google Chrome 插件

在启动浏览器的时候添加--user-data-dir 用户数据目录,即可启动带插件的浏览器,并且会记住用户的cookies数据

from selenium import webdriver
import getpass

# 启用带插件的浏览器
option = webdriver.ChromeOptions()
option.add_argument(f"--user-data-dir=C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data")
driver = webdriver.Chrome(chrome_options=option)   # 打开chrome浏览器
driver.get("https://www.cnblogs.com/yoyoketang/")

playwright 启动本地 Google Chrome

使用 launch_persistent_context 方法启动本地的chrome 浏览器,并且设置 channel="chrome"

import getpass
from playwright.sync_api import sync_playwright
# 上海悠悠 wx:283340479  
# blog:https://www.cnblogs.com/yoyoketang/


# 获取 google chrome 的本地缓存文件
USER_DIR_PATH = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"

with sync_playwright() as p:
    browser = p.chromium.launch_persistent_context(
                        # 指定本机用户缓存地址
                        user_data_dir=USER_DIR_PATH,
                        # 接收下载事件
                        accept_downloads=True,
                        # 设置 GUI 模式
                        headless=False,
                        bypass_csp=True,
                        slow_mo=1000,
                        channel="chrome",

                    )

    page = browser.new_page()
    page.goto("https://www.cnblogs.com/yoyoketang")

    page.pause()

在运行的时候,先关闭本地的chrome 浏览器,再执行代码,就可以看到启动的浏览器,打开网站不需要登录了,但是插件并没有加载进去。

配置args 参数加载插件

Google Chrome 插件加载需配置args 参数, 所有的 args 参数列表可以在这个地址查询https://peter.sh/experiments/chromium-command-line-switches/

在使用脚本加载扩展插件时,一定要解压crx文件,不要直接安装crx

import getpass
from playwright.sync_api import sync_playwright


# 获取 google chrome 的本地缓存文件
USER_DIR_PATH = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"
# chrome.exe指定可执行文件路径
# executable_path = "chromium-111/chrome-win/chrome.exe"

# chrome插件目录,下载后解压crx
path_to_extension = f"\\Users\\Downloads\\extension\\xxx"

with sync_playwright() as p:
    browser = p.chromium.launch_persistent_context(
                        # 指定本机用户缓存地址
                        user_data_dir=USER_DIR_PATH,
                        # executable_path=executable_path,  # 如果有需要可以下载chrome.exe到指定目录加载
                        # 接收下载事件
                        accept_downloads=True,
                        # 设置 GUI 模式
                        headless=False,
                        bypass_csp=True,
                        slow_mo=1000,
                        channel="chrome",
                        args=[
                            f"--disable-extensions-except={path_to_extension}",
                            f"--load-extension={path_to_extension}"
                        ],  # 加载扩展插件

                    )

扩展程序仅在 Chrome / Chromium GUI模式中使用。

使用代理

使用代理可以在launch_persistent_context 加上proxy 参数

proxy=ProxySettings(server="http://xxx.xxx.xxx.xxx:xxxx"),

标签:插件,playwright,浏览器,launch,Chrome,chrome,Google
From: https://www.cnblogs.com/yoyoketang/p/17221364.html

相关文章

  • Chrome高级调试技巧
    (大招)0.直接在控制台安装npm包:最后来一个大招你遇到过这个场景吗?有时候想使用比如days或者Flodash的某个AP,但是又不想去官网查,如果可以在控制台直接试出来就好了。C......
  • python+playwright 学习-32 启动Google Chrome 或 Microsoft Edge浏览器
    前言playwright默认会下载chromium,firefox和webkit三个浏览器,目前支持通过命令下载的浏览器有:chromium、chrome、chrome-beta、msedge、msedge-beta、msedge-dev、f......
  • Node.js版的Playwright等待所有请求完成
    以下是一个Node.js版的Playwright等待所有请求完成的Demo喵~:```javascriptconst{chromium}=require('playwright');(async()=>{constbrowser=awaitchr......
  • python+playwright 学习-31 事件添加与删除
    前言Playwright允许监听网页上发生的各种类型的事件,例如网络请求、子页面的创建、dedicatedworkers等。等待特定事件大多数时候,脚本需要等待特定事件的发生。下面是......
  • 微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发
    一、前言大家好,我是六哥!又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的。其实不是我不积极,而是相对更文学习来说,优先级不是最高。......
  • How To Disable Chrome Tab Previews
    IfyouhavebeengettingannoyedbytheslowloadingofpreviewswheneveryouhoverovertabsinChromethesolutionissimple.Here’showtogetitbacktos......
  • Node.js 中使用 Playwright 定位到一个 iframe
      要在Node.js中使用Playwright定位到一个iframe并获取其在屏幕中的位置,可以按照以下步骤进行:1.使用`page.frame()`方法获取iframe元素的句柄:```javas......
  • chrome导出导入har文件
    问题在特定的网络情况,需要分析网络请求一线复现问题,导出网络请求har发给二线分析强求解决har(httparchiveformat)http请求归档文件,用来保存http请求过程的文件保存h......
  • 在chrome-console中进行xpath/css/js定位(六)
    1.xpathconsole中调用xpath的基本格式:$x("xpath表达式")1.1绝对定位与相对定位绝对定位:$x("/xpath表达式")相对定位:$x("//xpath表达式") 1.2通配符与不包含筛......
  • chrome小恐龙作弊代码
    chrome断网后的小恐龙游戏F12打开开发者工具->console->输入如下代码,分数要多少有多少Runner.instance_.setSpeed(99999);试试瞬间满分window.tempGameOver=Runner.in......