2013-12-20 16 views
9

C#のSelenium WebdriverでPhantomJSを使用しようとしています。以下の私のコードです: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

ブライアンと@ 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

関連する問題