1

ctrl+F5 (デバッグではない) で実行している場合、数行のプログラムは完全に機能しますが、F5 (デバッグ) で実行している場合は例外がスローされます。

private static void Main(string[] args)
{
    IWebDriver driver = new ChromeDriver(@"C:\Program Files (x86)\ChromeDriver");

このステートメントは、「ターゲット マシンが積極的に拒否したため、接続できませんでした」という例外を内部例外なしでスローします。

繰り返しますが、ctrl-f5 で完全に動作します

  • ウィンドウズ 7 x64
  • VS 2012
  • Selenium WebDriver NuGet Packcge 2.35 (最新) の使用
  • ChromeDriver.exe (v2.4.226107) の使用 (最新)
  • すべてのファイアウォールとアンチウイルスなどが強制終了されました。
  • VS を管理者として実行し、UAC をオフにする

デバッグとデバッグなしでの実行のこの違いはなぜですか? (デバッガーにはホストプロセスがあることは知っていますが、それについては説明しないでください)

この単純なプログラムをデバッグモードで実行するにはどうすればよいですか?

何か案は?事前にThx

4

2 に答える 2

3

この質問を読んで考えてくれたすべての人に感謝します。私はそれを解決しました。まあ、それはばかげたことですが、ここで同様の質問がSelenium WebDriverと不平を言っていると確信しています

「ターゲットマシンがアクティブに拒否したため、接続できませんでした」例外

この解決策があり、他の回答には、発行された解決済みアクションと実行済みアクションの間の相関関係がありませんでした。それらのほとんどは、ChromeDriver.exe の他のバージョンを使用し、バージョンの非互換性と ChromeDriver.exe のバグについて話し合うことを提案しています。

私は(少なくとも私の場合)これらの解決策は間違っていると思います。

「エラー」は、ChromeDriver.exe に関するものではなく、WebDriver アセンブリからのものです。WebDriver のソースを調べたところ、次のとおりです。

while (!processStarted && DateTime.Now < timeout)
{
   try
   {
      request.GetResponse();
      processStarted = true;
   }
      catch (WebException)
   {
}

DriverService クラスが開始されると、ChromeDriver.exe はすぐにリクエストによるポーリングを開始します。プロセスの開始には時間がかかるため、最初の数十回の試行ではポートが開いていません... (少なくともここでは Sleep(10) または Sleep(50) が良いでしょうが、とにかく)

ここでのポイント:運が悪ければ、VS 2012 のオプション/デバッグ/全般の [マイ コードのみを有効にする]チェックせず、デバッグ/例外/スローをチェックした場合、デバッガーはこの例外によって中断されますが、もちろんそうはなりません。ソースを参照してください。例外行はあなたの行になります

IWebDriver driver = new ChromeDriver(@"C:\Program Files (x86)\ChromeDriver");

タイミング(プロセスの開始)によっては、数回繰り返されることがあり、ポート、ファイアウォール、ChromeDriver.exe のバージョンなどが例外に関係していると思われます。

于 2013-10-16T09:29:02.057 に答える