2012-07-16 320 views
9

我创建了一个使用C#中的硒和ChromeDriver自动化Chrome的播放器。它工作正常。ChromeDriver控制台应用程序隐藏

问题是我面对的是,当它为ChromDriver创建一个对象时,它将启动ChromeDriver应用程序,该应用程序会弹出,然后Chrome会加载。这是完美的,因为该应用程序正在为我加载该铬。

无论如何,我可以打开ChromeDriver隐藏?

+0

这个软件是为测试。在这方面,控制台窗口是一件受欢迎的事情。我不确定你使用的是什么,但听起来像是没有测试。对于潜在的问题,可能会有更好的解决方案,例如直接进行API调用,而不是通过浏览器。 – 2017-06-23 15:18:25

回答

6

是的,您需要修改WebDriver \ DriverService.cs中的源代码Start(); add:

this.driverServiceProcess.StartInfo.CreateNoWindow = true; 
+0

不要使用Selenium项目的完整构建过程来做这件事。在Visual Studio中简单构建不会为您提供与Selenium项目构建脚本生成的组件等效的组件。 – JimEvans 2013-05-01 22:40:11

12

不,没有办法在.NET绑定中隐藏chromedriver.exe的控制台窗口,而无需修改绑定源代码。这被看作是绑定的一个特性,因为它很容易看到你的代码没有正确清理ChromeDriver的资源,因为控制台窗口保持打开状态。在其他语言的情况下,如果您的代码没有通过调用WebDriver对象上的quit()方法来正确清理ChromeDriver的实例,则最终可能会在您的计算机上运行zombie chromedriver.exe进程。

+8

哇,认真,downvoters?只是因为一个答案不是你想听到的并不是一个不正确或不好的答案。我可以保证这个答案在所有方面都是完全正确的,包括对作者意图的猜测(因为我是作者)。 – JimEvans 2013-05-01 22:34:15

+0

你好@JimEvans - 我在其中一台电脑上遇到了相反的问题。这台电脑隐藏了IEDriverServer和ChromeDriver的所有控制台窗口,我不知道为什么。该代码没有任何这些特定选项,并且代码在其他计算机上运行时窗口是可见的。任何见解?谢谢! – AngieM 2016-10-17 13:19:08

+0

@AngieM你使用.NET语言绑定?如果没有,那么这个问题中的信息不适用于你。其他语言(Python,Ruby,Java)可能无法完全控制是否出现单独的命令提示符窗口。 – JimEvans 2016-10-17 13:25:42

26

在最新的WebDriver中,无需修改WebDriver \ DriverService.cs中的源代码。您只需实例化ChromeDriverService并将HideCommandPromptWindow设置为true,然后通过该服务和ChromeOptions实例化ChromeDriver。我给C#代码示例如下

 var chromeDriverService = ChromeDriverService.CreateDefaultService(); 
     chromeDriverService.HideCommandPromptWindow = true; 
     return new ChromeDriver(chromeDriverService, new ChromeOptions()); 
+2

您还可以将路径添加到驱动程序二进制ChromeDriverService :: CreareDefaultService(pathToBinary); – kirsche40 2015-06-18 15:28:36

相关问题