我试图在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窗口将再次显示。
答案 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进程。