我创建了一个播放器,它将使用selenium和C#中的ChromeDriver自动化chrome。它工作正常。
发布我面临的问题是,当它为ChromDriver创建一个对象时,它将启动ChromeDriver应用程序,该应用程序会弹出,然后Chrome将加载。它非常完美,因为该应用程序正在为我加载chrome。
无论如何,我可以打开隐藏的ChromeDriver吗?
是的,您需要在Start()
中的WebDriver \ DriverService.cs中修改源代码;加:
this.driverServiceProcess.StartInfo.CreateNoWindow = true;
在最新的WebDriver中,不需要在WebDriver \ DriverService.cs中修改源代码。您只需要实例化ChromeDriverService并将HideCommandPromptWindow设置为true,然后通过该服务和ChromeOptions实例化ChromeDriver。我将在下面给出C#代码示例
var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;
return new ChromeDriver(chromeDriverService, new ChromeOptions());
不,在没有修改绑定源代码的情况下,无法在.NET绑定中隐藏chromedriver.exe的控制台窗口。这被视为绑定的一项功能,因为它使您很容易看到代码未正确清理ChromeDriver的资源,因为控制台窗口仍处于打开状态。对于某些其他语言,如果您的代码未通过调用WebDriver对象上的quit()
方法正确清理ChromeDriver实例,则最终可能会在您的计算机上运行zombie chromedriver.exe进程。
现在可以使用无头选项。可能还没有。 Running Chrome Headless
转换为C#,你可以这样做:
ChromeOptions options = new ChromeOptions();
options.AddArgument("headless");
ChromeDriver driver = new ChromeDriver(options);
现在浏览器窗口是不可见的,而程序的其余部分保持不变。