C#从python启动chromedriver并在c#中像driver一样使用它

Ada*_*wek 1 c# python selenium selenium-chromedriver undetected-chromedriver

我只需要像这样从 python 启动 chromedriver :

import undetected_chromedriver as uc
from selenium import webdriver

options = webdriver.ChromeOptions() 
driver = uc.Chrome()
driver.get('https://accounts.stockx.com/login')


print("Chrome started")
Run Code Online (Sandbox Code Playgroud)

我的 C# 程序有 100000 行代码,没有时间将所有内容重写为 C#。

我必须像上面显示的代码一样打开 chromedriver。我需要从 C# 代码访问此 chromedriver。我怎样才能做到这一点?

在 C# 中我只是这样做:

ChromeDriver driver;
var chromeOptions = new ChromeOptions();
driver = new ChromeDriver(chromeDriverService,chromeOptions);
Run Code Online (Sandbox Code Playgroud)

问题是:我如何通过 python 启动 chromedriver,然后从 c# 访问该驱动程序?我需要它,因为来自 python 的 chromedriver 无法被验证码检测到。感谢您的进步!

Gre*_*rdt 7

我想我可能有一个基于Selenium 的解决方案:使用 C# 连接到现有的 Chrome 浏览器,它将由 WPF 应用程序启动的 Google Chrome 浏览器连接到在另一个进程中启动的 Web 驱动程序。

\n

来自博客文章:

\n
\n

主窗口:

\n
private void LaunchBrowser_Click(object sender, RoutedEventArgs e)\n{\n    Process proc = new Process();\n    proc.StartInfo.FileName = @"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe";\n    proc.StartInfo.Arguments = "https://www.intellitect.com/blog/ --new-window --remote-debugging-port=9222 --user-data-dir=C:\\\\Temp";\n    proc.Start();\n}\n
Run Code Online (Sandbox Code Playgroud)\n

[--remote-debugging-port论证]很关键。它告诉 Chrome 使用哪个端口进行远程调试...

\n

...

\n
ChromeOptions options = new ChromeOptions();\noptions.DebuggerAddress = "127.0.0.1:9222";\n
Run Code Online (Sandbox Code Playgroud)\n

我们将 Selenium 指向调试器地址(包括端口)。现在,我们可以 \xe2\x80\x9cattach\xe2\x80\x9d 到桌面应用程序启动的 Chrome 实例。

\n
\n

这为我们提供了在 Python 中尝试的基本模式。

\n
    \n
  1. (Python)--remote-debugging-port启动 ChromeDriver 并使用 ChromeOptions 在参数中指定:

    \n
    options = webdriver.ChromeOptions()\noptions.add_argument("--remote-debugging-port=9222")\n#                   Port number to use in C#: ^^^^ (change to suit your needs)\ndriver = webdriver.Chrome(chrome_options=options)\n
    Run Code Online (Sandbox Code Playgroud)\n
  2. \n
  3. (C#)初始化另一个 ChromeDriver 对象,并使用与 Python 中相同的端口号指定调试器地址--remote-debugging-port

    \n
    var options = new ChromeOptions()\n{\n    DebuggerAddress = "127.0.0.1:9222"\n    //  port number from Python: ^^^^\n};\n\nvar driver = new ChromeDriver(options);\n
    Run Code Online (Sandbox Code Playgroud)\n
  4. \n
\n

我没有尝试过这样做,但它遵循相同的基本步骤。老实说,这是一个盲目的猜测,所以如果不起作用,请随时告诉我或提出后续问题。

\n