C# 从 python 启动 chromedriver 并在 c# 中像驱动程序一样使用它
C# start chromedriver from python and use it in c# like driver
我只需要像这样从 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")
我的 C# 程序有 100000 行代码,没有时间将所有内容重写为 C#。
我必须像上面显示的代码一样打开 chromedriver。我需要从 C# 代码访问这个 chromedriver。我该怎么做?
在 C# 中,我就是这样做的:
ChromeDriver driver;
var chromeOptions = new ChromeOptions();
driver = new ChromeDriver(chromeDriverService,chromeOptions);
问题是:如何通过 python 启动 chromedriver,然后从 c# 访问该驱动程序?
我需要它,因为来自 python 的 chromedriver 无法被验证码检测到。
感谢您的进步!
我想我可能有一个基于 Selenium: Attach to an Existing Chrome Browser with C# 的解决方案,它将 WPF 应用程序启动的 Google Chrome 浏览器连接到另一个进程中启动的 Web 驱动程序。
来自博客post:
MainWindow:
private void LaunchBrowser_Click(object sender, RoutedEventArgs e)
{
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
proc.StartInfo.Arguments = "https://www.intellitect.com/blog/ --new-window --remote-debugging-port=9222 --user-data-dir=C:\Temp";
proc.Start();
}
The [--remote-debugging-port
argument] is critical. It tells Chrome which port to use for remote debugging...
...
ChromeOptions options = new ChromeOptions();
options.DebuggerAddress = "127.0.0.1:9222";
We point Selenium at a debugger address (port included). Now, we can “attach” to the Chrome instance launched by our desktop app.
这为我们提供了在 Python 中尝试的基本模式。
(Python) 启动 Chrome 驱动程序并使用 [=45= 在参数中指定 --remote-debugging-port
]选项:
options = webdriver.ChromeOptions()
options.add_argument("--remote-debugging-port=9222")
# Port number to use in C#: ^^^^ (change to suit your needs)
driver = webdriver.Chrome(chrome_options=options)
(C#) 初始化另一个 ChromeDriver 对象,并使用与 --remote-debugging-port
相同的端口号指定调试器地址在 Python:
var options = new ChromeOptions()
{
DebuggerAddress = "127.0.0.1:9222"
// port number from Python: ^^^^
};
var driver = new ChromeDriver(options);
我没有尝试过,但它遵循相同的基本步骤。老实说,这是一个盲目的猜测,所以如果它不起作用,请随时告诉我或问一个 follow-up 问题。
我只需要像这样从 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")
我的 C# 程序有 100000 行代码,没有时间将所有内容重写为 C#。
我必须像上面显示的代码一样打开 chromedriver。我需要从 C# 代码访问这个 chromedriver。我该怎么做?
在 C# 中,我就是这样做的:
ChromeDriver driver;
var chromeOptions = new ChromeOptions();
driver = new ChromeDriver(chromeDriverService,chromeOptions);
问题是:如何通过 python 启动 chromedriver,然后从 c# 访问该驱动程序? 我需要它,因为来自 python 的 chromedriver 无法被验证码检测到。 感谢您的进步!
我想我可能有一个基于 Selenium: Attach to an Existing Chrome Browser with C# 的解决方案,它将 WPF 应用程序启动的 Google Chrome 浏览器连接到另一个进程中启动的 Web 驱动程序。
来自博客post:
MainWindow:
private void LaunchBrowser_Click(object sender, RoutedEventArgs e) { Process proc = new Process(); proc.StartInfo.FileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"; proc.StartInfo.Arguments = "https://www.intellitect.com/blog/ --new-window --remote-debugging-port=9222 --user-data-dir=C:\Temp"; proc.Start(); }
The [
--remote-debugging-port
argument] is critical. It tells Chrome which port to use for remote debugging......
ChromeOptions options = new ChromeOptions(); options.DebuggerAddress = "127.0.0.1:9222";
We point Selenium at a debugger address (port included). Now, we can “attach” to the Chrome instance launched by our desktop app.
这为我们提供了在 Python 中尝试的基本模式。
(Python) 启动 Chrome 驱动程序并使用 [=45= 在参数中指定
--remote-debugging-port
]选项:options = webdriver.ChromeOptions() options.add_argument("--remote-debugging-port=9222") # Port number to use in C#: ^^^^ (change to suit your needs) driver = webdriver.Chrome(chrome_options=options)
(C#) 初始化另一个 ChromeDriver 对象,并使用与
--remote-debugging-port
相同的端口号指定调试器地址在 Python:var options = new ChromeOptions() { DebuggerAddress = "127.0.0.1:9222" // port number from Python: ^^^^ }; var driver = new ChromeDriver(options);
我没有尝试过,但它遵循相同的基本步骤。老实说,这是一个盲目的猜测,所以如果它不起作用,请随时告诉我或问一个 follow-up 问题。