2017-04-22 26 views
7

localhostでかなりうまく動作するセレンテストをいくつか作成しましたが、appharborにアプリケーションをデプロイすると例外がスローされます。AppHarborのSelenium InternetExplorerDriver:ローカルホストでドライバサービスを開始できません

このコードはInternetExplorerDriverの新しいインスタンスを作成する上での例外がスローされます。ここでは

var options = new InternetExplorerOptions(); 
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
Driver = new InternetExplorerDriver(DriverDirectory, options); 

は例外です:

OpenQA.Selenium.WebDriverException: Cannot start the driver service on http://localhost:35187/ 
    at OpenQA.Selenium.DriverService.Start() 
    at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
    at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities) 
    at OpenQA.Selenium.IE.InternetExplorerDriver..ctor(String internetExplorerDriverServerDirectory, InternetExplorerOptions options) 
    ... 

あなたは理由何ができるかアドバイスをしてくださいとどのような方法がありでしたそれを解決するには?範囲InternetExplorerDriverServiceに指定

+0

使用しているIE ExplorerDriverのバージョンとSeleniumの設定を追加できますか?これは、古いSelenium構成や、ファイアウォールのようなシステム構成の問題が原因である可能性があります。 – demouser123

答えて

1

ポート333は、周知のポートナンバーに収まる:

ほとんどのシステムでは、よく知られているポート番号はシステム(ルート)のみを使用することができる プロセスまたは特権ユーザーによって実行されるプログラムによって実行されます。 ドライバサービスが を明示的に指定しないで、独自のポートを選択することを許可するか、または使用可能なポートを指定します。

は物事のカップルを確認してください:

  • ドライバをダブルIEDriverServer.exeはあなたのポートでリスニングを与える メッセージを、それが自動的として拾っものを見るためにクリックすると予想場所
  • に位置しています利用可能です。
  • Firwallは時々あなたがIEの.exeファイルをダウンロードし、それがwebdriverを呼び出しでパスだ指定する必要があり、ニールスの答えに追加するループバック
2

へのトラフィックをブロックしていないか確認してください。 セレンドライバがインストールされている場合、つまりインストール中に自動的にドライバが検索されます。 または、明示的にダウンロードし、IE .exeファイルへのパスを記述する必要があります。

私はこれで開始する、すなわちドライバー・パスのためのコードを参照することはできませんので、リンク http://docs.seleniumhq.org/download/

1

を訪問し、.exeファイルをダウンロードします。 Driversというフォルダをソリューションに追加します。 ie.exeファイルを追加します。

ドライバコードに以下を追加してください。私の推測は、あなたがローカルホストからAppHarborへ行くときにそのパスが変化しているということです。私はJenkinsとSauceLabsを使ってこれを見てきました。 getBasePathを使うと、どこにインストールされているのかわからなくなります。

私は以下が正しいと思いますが、テストしていません。

InternetExplorerOptions options = new InternetExplorerOptions(); 
    options.IntroduceInstabilityByIgnoringProtectedModeSettings = true; 
    IWebDriver driver = new InternetExplorerDriver(Path.Combine(GetBasePath, @"Drivers\\"), options); 

driver.Navigate().GoToUrl("http://www.somewhere.com"); 


     public static string GetBasePath 
    { 
     get 
     { 
      var basePath = 
       System.IO.Path.GetDirectoryName((System.Reflection.Assembly.GetExecutingAssembly().Location)); 
      basePath = basePath.Substring(0, basePath.Length - 10); 
      return basePath; 
     } 
    }