2012-07-16 4 views
9

C#でセレンとChromeDriverを使用してクロムを自動化するプレーヤーを作成しました。それは正常に動作しています。ChromeDriverコンソールアプリケーションhide

ChromDriverのオブジェクトを作成すると、ChromeDriverアプリケーションが起動し、ポップアップが表示され、Chromeが読み込まれます。そのアプリケーションが私のためにそのクロムをロードしているので完璧です。

ChromeDriverを非表示にすることができますか?

+0

このソフトウェアはテストのためのものです。そしてその点で、コンソールウィンドウは歓迎すべきものです。私はあなたがこれを使っているのかどうかはわかりませんが、テストしていないように聞こえます。ブラウザを介するのではなく、APIコールを直接行うなど、根本的な問題の解決策があるかもしれません。 –

答えて

6

はい、WebDriver \ DriverService.csのソースコードをStart()に変更する必要があります。追加:

this.driverServiceProcess.StartInfo.CreateNoWindow = true; 
+0

Seleniumプロジェクトの完全なビルドプロセスを使用せずにこれを行うことに注意してください。単にVisual Studioでビルドしても、Seleniumプロジェクトのビルドスクリプトで生成されたものと同等のアセンブリは提供されません。 – JimEvans

12

いいえ、.NETバインディングのchromedriver.exeのコンソールウィンドウを非表示にする方法はありません。バインディングのソースコードは変更しないでください。これは、コンソールウィンドウが開いたままなので、コードがChromeDriverのリソースを正しくクリーンアップしていないことを非常に簡単に確認できるため、バインディングの機能として認識されます。他の言語の場合、コードがWebDriverオブジェクトのquit()メソッドを呼び出すことによってChromeDriverのインスタンスを適切にクリーンアップしないと、マシン上で実行されているzombie chromedriver.exeプロセスが終了する可能性があります。

+8

うわー、真剣に、downvoters?答えがあなたが聞きたいものではないからといって、正しくないか悪い答えにならないからです。私は、この回答が著者の意図(私が著者であるように)に関する推測を含め、あらゆる点で完全に正しいことを保証することができます。 – JimEvans

+0

こんにちは@JimEvans - 私は実際に自分のコンピュータのいずれかで逆の問題を抱えています。このコンピュータはIEDriverServerとChromeDriverのすべてのコンソールウィンドウを隠していますが、理由はわかりません。コードにはこれらのオプションはありません。また、コードを他のコンピュータで実行するとウィンドウが表示されます。どんな洞察?ありがとう! – AngieM

+0

@AngieM .NET言語バインディングを使用していますか?そうでない場合、この質問の情報はあなたには当てはまりません。別の言語(Python、Ruby、Java)では、別のコマンドプロンプトウィンドウが表示されるかどうかはまったく制御できません。 – JimEvans

26

WebDriver \ DriverService.csのソースコードを最新のWebDriverで変更する必要はありません。 ChromeDriverServiceをインスタンス化してHideCommandPromptWindowをtrueに設定し、そのサービスとChromeOptionsでChromeDriverをインスタンス化するだけです。私はあなたが今、これを使用することができます

 var chromeDriverService = ChromeDriverService.CreateDefaultService(); 
     chromeDriverService.HideCommandPromptWindow = true; 
     return new ChromeDriver(chromeDriverService, new ChromeOptions()); 
+2

また、ドライバーバイナリのパスをChromeDriverService :: CreareDefaultService(pathToBinary)に追加することもできます。 – kirsche40