Selenium Webdriver PhantomJS C#总是打开一个cmd窗口

时间:2013-12-20 20:24:50

标签: c# selenium selenium-webdriver phantomjs

我试图在C#中使用PhantomJS和Selenium Webdriver。以下是我的代码:

IWebDriver driver = new PhantomJSDriver();
driver.Navigate().GoToUrl("http://www.google.com");
Console.WriteLine(driver.Url);
driver.Quit();

代码工作正常但无论何时运行,它都会打开一个cmd窗口,其中显示了phantomjs的所有日志。 cmd也会被driver.Quit()关闭。

问题是我不希望显示cmd窗口。我该怎么做才能实现这个目标?

更新: 当我在Python中执行相同的代码时,cmd窗口不会显示。但是如果我使用py2exe将python脚本转换为exe,则cmd窗口将再次显示。

2 个答案:

答案 0 :(得分:34)

正如JimEvans上面提到的,这个功能在2.40中添加:

https://code.google.com/p/selenium/source/detail?r=bd0e4ef7504cd6a7f184b19b2aa95b56f8958ab5

我不确定如何正确使用PhantomJSDriverService,但以下工作:

var driverService = PhantomJSDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;
var driver = new PhantomJSDriver(driverService);

答案 1 :(得分:2)

不,如果不修改绑定源代码,就无法在.NET绑定中隐藏PhantomJS.exe的控制台窗口。这被视为绑定的一个特性,因为它很容易看到你的代码没有正确清理PhantomJSDriver的资源,因为控制台窗口保持打开状态。对于某些其他语言,如果您的代码未通过调用WebDriver对象上的quit()方法正确清理PhantomJSDriver实例,则最终可能会在您的计算机上运行僵尸PhantomJS.exe进程。