2013-12-20 108 views
9

我想在C#中使用PhantomJS和Selenium Webdriver。以下是我的代码:Selenium Webdriver PhantomJS C#总是打开一个cmd窗口

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

代码工作正常,但每当它运行时,它开辟了在显示phantomjs的所有日志一个cmd窗口。该cmd也关闭driver.Quit()

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

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

+0

我做不认为你可以禁用命令窗口,对不起。 – Brian

+0

感谢Brian和@ user1177636。实际上,我们正在创建一个桌面软件,它将在后台与很多网站进行交互,我们希望尽可能专业。这就是为什么我们希望不显示命令窗口。 –

+0

请更新您接受的答案。 – jpmc26

回答

2

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

+0

感谢@JimEvans的详细回复。你能帮我解决我在绑定源代码中所做的改变吗?另外,它是Selenium Webdriver绑定还是PhantomJS.exe打开控制台窗口? –

+3

实际上,隐藏此窗口的功能已添加到.NET绑定中(http://code.google.com/p/selenium/source/detail?r=bd0e4ef7504cd6a7f184b19b2aa95b56f8958ab5)。它在2.40发布时应该可用。在你问之前,没有发布时间表的时间表。 – JimEvans

+0

谢谢@JimEvans。它在发布时会帮助我很多。 –

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); 
+0

感谢@Martin的回复。它确实有帮助。 –

+0

真的很感谢代码如何使用这个!我真的很想知道如何使用源代码修订链接中的信息。 – bojingo

相关问题