无法使用 Playwright 连接到现有 Chrome 实例

问题描述 投票:0回答:1

我正在尝试让 Playwright 连接到已打开的现有 Chrome 实例,这样我就可以避免每次登录。我曾多次尝试使用 StorageState 或 SetCookies,但它们根本不起作用,所以我已经放弃了。

不幸的是,我似乎永远无法连接它。它只是超时了,并没有说什么。

我尝试过的各种变体,都导致超时,尽管错误暗示它在断开连接之前已连接......:

_browser = await _playwright.Chromium.ConnectOverCDPAsync("ws://127.0.0.1:9222/devtools/browser/aec930b5-bd2b-4e6c-8b00-68f0a414ad77");
_browser = await _playwright.Chromium.ConnectOverCDPAsync("http://localhost:9222");

以下内容只是打开一个新的隐身窗口,而不是使用相同的现有会话,因此需要登录:

        _browser = await _playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
        {
            ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe",
        });

我还确保在杀死所有 Chrome 实例后重新启动浏览器,并启用远程调试。我什至尝试过管理员模式来咯咯笑,但无济于事。

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

我已确认 Chrome DevTools 协议 (CDP) 已启用,方法是:

http://127.0.0.1:9222/json/version

显示:

{
   "Browser": "Chrome/122.0.6261.112",
   "Protocol-Version": "1.3",
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
   "V8-Version": "12.2.281.21",
   "WebKit-Version": "537.36 (@9d4c1072da62b411b351a38b9ed6214ab236aa7b)",
   "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/aec930b5-bd2b-4e6c-8b00-68f0a414ad77"
}

所以看起来它确实应该能够通过 CDP 连接,但无论如何都会超时。

使用已登录的自定义配置文件打开 Chrome 或 Firefox 的新实例也是一个合适的解决方案。到目前为止,我所能做的就是传统的打开“隐身”风格的浏览器。

不幸的是,在这种奇怪的情况下无法跳过登录,因此无需建议!

我将不胜感激你们能提供的任何指导。

c# google-chrome google-chrome-devtools playwright playwright-dotnet
1个回答
0
投票

很多时候 9222 端口不起作用,请尝试其他号码,例如 9214,9234 等

首先通过 cd 转到 chrome 位置安装

 Cd C:\Program Files\Google\Chrome\Application

运行以下命令开始浏览端口可能不是9222因为我有时也遇到打不开的问题

chrome.exe --remote-debugging-port=9214 --no-first-run --no-default-browser-check --user-data-dir="C:\Users\gakhuran\AppData\Local\Google\Chrome\User Data

浏览器打开后,您可以登录 et 并执行先决条件

下面的代码应该有助于连接到已经打开的浏览器

 IBrowser browser = await Playwright.Chromium.ConnectOverCDPAsync("http://localhost:9214");
 var default_context = browser.Contexts[0];
 var Page1 = default_context.Pages[0];

我一直在用这个。唯一的问题是端口有时休息一切正常

© www.soinside.com 2019 - 2024. All rights reserved.