Selenium Webdriver PhantomJS C# всегда открывает окно cmd

Я пытаюсь использовать PhantomJS с Selenium Webdriver в C#. Ниже приведен мой код:

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

код работает нормально, но всякий раз, когда он запускается, он открывает окно cmd, где отображается весь журнал phantomjs. УМК также не работает с driver.Quit().

проблема в том, что я не хочу, чтобы окно cmd будет отображаться. Что я должен сделать, чтобы достичь этого?

обновление: Когда я делаю тот же код в Python, окно cmd не отображается. Но если я преобразуйте скрипт python в exe с помощью py2exe, окна cmd снова начнут отображаться.

2 ответов


нет, нет способа скрыть окно консоли PhantomJS.exe в привязках .NET без изменения исходного кода Привязок. Это рассматривается как особенность Привязок, так как это очень легко увидеть, когда ваш код неправильно очистил ресурсы PhantomJSDriver, так как окно консоли остается открытым. В случае некоторых других языков, если ваш код неправильно очищает экземпляр PhantomJSDriver, вызывая метод quit() в WebDriver объект, вы можете в конечном итоге с зомби PhantomJS.exe процесс, запущенный на вашем компьютере.


Как 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);