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

Vik*_*jha 9 c# selenium phantomjs selenium-webdriver

我想在C#中使用PhantomJS和Selenium Webdriver.以下是我的代码:

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

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

问题是我不希望显示cmd窗口.我该怎么做才能做到这一点?

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

Mar*_*nek 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);
Run Code Online (Sandbox Code Playgroud)


Jim*_*ans 2

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

  • 实际上,隐藏此窗口的功能已[刚刚添加](http://code.google.com/p/selenium/source/detail?r=bd0e4ef7504cd6a7f184b19b2aa95b56f8958ab5) 到.NET 绑定中。2.40 发布时应该可以使用。在你问之前,不,没有公布何时发布此类版本的时间表。 (3认同)
  • .NET 绑定 2.40 可在 NuGet 上使用。目前,我们有点束手无策,因为 Google Code 已停止托管 .NET 和 Java 的下载,因此我们没有地方托管它们。我们正在研究解决方案,预计很快就会解决。 (2认同)