无法为 Selenium Webdriver C# 设置 ChromeOptions
Unable to set ChromeOptions for Selenium Webdriver C#
我正在使用 Selenium chrome 驱动程序打开 URLs 并且我正在为每个 URL 创建新的驱动程序实例。我正在通过 ChromeOptions 为每个 URL 分配端口号。
正如我之前提到的,我正在为每个 URL 创建一个新的端口号。在第一次迭代期间打开端口并正确加载 URL 但在第一次迭代后新端口未打开。我已经在命令提示符下使用 netstat -an
验证了端口状态。那里只列出了我的第一个端口号。
因此,当断点到达这行代码时 driver = new ChromeDriver(chromeService, m_Options);
一分钟内没有任何反应,并且由于无法连接该端口而出现超时错误。
private static List<int> processIdList = new List<int>();
IWebDriver driver;
foreach (var url in urls)
{
int portno = GetAvailablePortNumber();
ProcessStartInfo pcsInfo = new ProcessStartInfo();
pcsInfo.FileName = "C:\Program Files\Google\Chrome\Application\chrome.exe"
pcsInfo.WorkingDirectory = "C:\Program Files\Google\Chrome\Application\chrome.exe"
pcsInfo.Arguments = = "--new-window --remote-debugging-port=portno --disable-fre --no-first-run --no-default-browser-check --user-data-dir=C:\SeleniumApps\WebLauncherTool\bin\Debug\ChromeUser\portno"
pcsInfo.LoadUserProfile = true;
Process process = new Process();
process.StartInfo = pcsInfo;
if (process.Start())
{
processId = process.Id;
processIdList.Add(processId);
}
ChromeDriverService chromeService = ChromeDriverService.CreateDefaultService();
chromeService.HideCommandPromptWindow = true;
ChromeOptions m_Options = new ChromeOptions();
m_Options.AddArgument("--disable-extensions");
m_Options.DebuggerAddress = $"localhost:{portno}";
driver = new ChromeDriver(chromeService, m_Options);
driver.Navigate().GoToUrl(url);
}
我不明白为什么端口没有打开。
有人可以解释一下吗?
启动 chrome 驱动程序会话时的默认行为是:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程使用
--remote-debugging-port=0
启动 chrome-browser 进程,这意味着 一些空闲端口 。
- Chromedriver 进程与 chrome-browser 进程交互
提供调试器地址
当我们定义DebuggerAddress
时,这意味着:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程 请勿启动 chrome-browser 进程,但会尝试通过提供的
DebuggerAddress
. 进行连接
提供--remote-debugging-port
当我们定义--remote-debugging-port
时,这意味着:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程在端口=
--remote-debugging-port
上启动 chrome-browser 进程
提供Chromedriver服务端口
- Chromedriver 进程在端口=chrome驱动程序服务端口.
上启动
- Chromedriver 进程使用
--remote-debugging-port=0
启动 chrome-browser 进程,这意味着 一些空闲端口 。
- Chromedriver 进程与 chrome-browser 进程交互
因此,当我们想要连接到已经启动的 --remote-debugging-port
浏览器实例时,需要提供 DebuggerAddress
。
我正在使用 Selenium chrome 驱动程序打开 URLs 并且我正在为每个 URL 创建新的驱动程序实例。我正在通过 ChromeOptions 为每个 URL 分配端口号。
正如我之前提到的,我正在为每个 URL 创建一个新的端口号。在第一次迭代期间打开端口并正确加载 URL 但在第一次迭代后新端口未打开。我已经在命令提示符下使用 netstat -an
验证了端口状态。那里只列出了我的第一个端口号。
因此,当断点到达这行代码时 driver = new ChromeDriver(chromeService, m_Options);
一分钟内没有任何反应,并且由于无法连接该端口而出现超时错误。
private static List<int> processIdList = new List<int>();
IWebDriver driver;
foreach (var url in urls)
{
int portno = GetAvailablePortNumber();
ProcessStartInfo pcsInfo = new ProcessStartInfo();
pcsInfo.FileName = "C:\Program Files\Google\Chrome\Application\chrome.exe"
pcsInfo.WorkingDirectory = "C:\Program Files\Google\Chrome\Application\chrome.exe"
pcsInfo.Arguments = = "--new-window --remote-debugging-port=portno --disable-fre --no-first-run --no-default-browser-check --user-data-dir=C:\SeleniumApps\WebLauncherTool\bin\Debug\ChromeUser\portno"
pcsInfo.LoadUserProfile = true;
Process process = new Process();
process.StartInfo = pcsInfo;
if (process.Start())
{
processId = process.Id;
processIdList.Add(processId);
}
ChromeDriverService chromeService = ChromeDriverService.CreateDefaultService();
chromeService.HideCommandPromptWindow = true;
ChromeOptions m_Options = new ChromeOptions();
m_Options.AddArgument("--disable-extensions");
m_Options.DebuggerAddress = $"localhost:{portno}";
driver = new ChromeDriver(chromeService, m_Options);
driver.Navigate().GoToUrl(url);
}
我不明白为什么端口没有打开。 有人可以解释一下吗?
启动 chrome 驱动程序会话时的默认行为是:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程使用
--remote-debugging-port=0
启动 chrome-browser 进程,这意味着 一些空闲端口 。 - Chromedriver 进程与 chrome-browser 进程交互
提供调试器地址
当我们定义DebuggerAddress
时,这意味着:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程 请勿启动 chrome-browser 进程,但会尝试通过提供的
DebuggerAddress
. 进行连接
提供--remote-debugging-port
当我们定义--remote-debugging-port
时,这意味着:
- Chromedriver 进程在一些空闲端口上启动。
- Chromedriver 进程在端口=
--remote-debugging-port
上启动 chrome-browser 进程
提供Chromedriver服务端口
- Chromedriver 进程在端口=chrome驱动程序服务端口. 上启动
- Chromedriver 进程使用
--remote-debugging-port=0
启动 chrome-browser 进程,这意味着 一些空闲端口 。 - Chromedriver 进程与 chrome-browser 进程交互
因此,当我们想要连接到已经启动的 --remote-debugging-port
浏览器实例时,需要提供 DebuggerAddress
。