2012-03-23 13 views
0

私は、現時点では奇妙な問題を抱えている、私はいくつかの受け入れテストの開始を作り、最新のセレンwebdriverををNUGetに行ったのです。細かいインストールし、ちょうどそれがすべての仕事をしていたことを証明するために簡単なテストを書いた:このプロジェクトは、.NET 4を使用しただけで、デフォルトのクラスライブラリですセレンwebdriverを2.20 .NETクライアント、依存関係の問題?

[Test] 
public void should_navigate_to_google() 
{ 
    var driver = new FirefoxDriver(); 
    driver.Navigate().GoToUrl("http://www.google.co.uk"); 
} 

、すべてがOK含まれており、私が構築され、Resharpersテストランナーを介してテストを実行しました。

OpenQA.Selenium.WebDriverException: は----> System.IO.FileNotFoundExceptionのFirefoxへの接続中にエラーが発生しました: ファイルまたはアセンブリをロードできませんでした「Ionic.Zip、それから私は以下のエラーを得ましたバージョン= 1.9.1.8、 カルチャニュートラル、PublicKeyToken = = edbe51ad942a3f5c」またはその依存関係の1つ 。システムは、指定されたファイルを見つけることができません。 でOpenQA.Selenium.Firefox.FirefoxDriver..ctor(AT OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()) OpenQAでOpenQA.Selenium.Firefox.FirefoxExtension.Install(文字列profileDir)で --FileNotFoundExceptionました。 OpenQA.Selenium.Firefox.FirefoxDriver.StartClientでOpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()で OpenQA.Selenium.Firefox.FirefoxProfile.WriteToDisk()でSelenium.Firefox.FirefoxProfile.InstallExtensions()()

私はちょっと困惑していて、ライブラリの.net 3.5バージョンを使用する必要があるかもしれないと思っていました。私はその後、.NET 4に戻って行くと、プロパティでまだ運をSpecificVersionを使用しないようにアセンブリを言ってみました。

私はx86用にビルドしています。そのFirefoxはデフォルトの場所にインストールされています。私もfirefoxプロファイルにexeの場所へのリンクを与えました。さらにfirefoxバイナリを作成して見てください。それから、NUGetバージョンを解凍して、クライアントドライバのバイナリをWebサイトから取得しました。同じ問題です。

バージョンを切り替えると、私はアイデアのうち、午前異なるCPUタイプのために構築しようとした後、そこにはほとんどこのような任意の問題について文書化され、それが有用である包みなさいここにいくつかの他の情報があります。 (デフォルトの場所にインストール)

  • のWindows 7 Professionalの64ビット
  • のVisual Studio 2010(ReSharperの6付き)プレミアム
  • Firefoxの11

私が作るために、Internet Explorerのドライバを使用してみましたファイアウォール固有の問題ではないことを確認してください。次のエラーが表示されます。

System.IO.FileNotFoundException : Could not load file or assembly 'Newtonsoft.Json, Version=4.0.6.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified. 
at OpenQA.Selenium.Remote.Command.get_ParametersAsJsonString() 
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute) 
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(DriverCommand driverCommandToExecute, Dictionary`2 parameters) 
at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) 
at OpenQA.Selenium.IE.InternetExplorerDriver..ctor() 

は、だから今、私はアイデアの出だと、これまでに約3時間を無駄にしている:(

答えて

3

私は笑うことはできませんが、私は泣いています。

これはおそらく今までにないばかげた新人ミスの1つで、私は簡単に問題に気付いたはずです。私は2つの新しいプロジェクトを作りました.1つは新しいユニットテストを、もう1つは受入れテストのためのものです。その後、私はWebDriverのすべての依存関係を受け入れテストプロジェクトに引き込み、Class1ファイルでテストを行い、すべてが機能していることを証明しました。

私が気づいていなかったのは、Resharperが私のリファレンスにWebDriver dllを喜んで含んでいたユニットテストプロジェクトでテストを書いていたのですが、私はそれを受け入れていると思っていましたリストされたアセンブリが利用できなかったことを意味していました。

は、とにかくここには本当の問題はありませんが、人々がポイントと間違ったのClass1.csを使用し男を笑うことができますので、私はここにこの質問を残すだけで、誰もが私と同じことを行うのに十分な愚かである包みなさいファイル:)

2

セレンは(あなたはサポートクラスを使用している場合、おそらくCastle.CoreNewtonsoft.JsonDotNetZipの特定のバージョンを使用するようにバインドされています。それぞれをアンインストールし、NuGetでSeleniumパッケージをアンインストールし、Seleniumを再インストールします。インストール後、Seleniumを更新しない限り、依存関係を更新しないでください(これはあなたのためです)。また

テストアセンブリが完全な.NETフレームワークではなく、クライアントプロファイルに設定されていることを確認してください。

+0

上記のように、私はプロジェクトとパッケージからNUGetファイルを完全に削除しました。(NUGetはアンインストールしましたが、削除されたことを二重にチェックしています)、サイトからクライアントドライバをダウンロードしてパッケージ内の別のフォルダに入れ、それら。だから彼らはサイトからダウンロードした2.20ジップバージョンのためにすべてコンパイルされています。私はクライアントプロファイルではなく完全な.netターゲットをターゲットにしています。 – Grofit

+0

そして、WebDriverは厳密な名前のアセンブリを提供していることを指摘しておきます。つまり、WebDriverは特定のバージョンの依存関係にリンクされていなければならず、NuGetの依存関係**は特定のバージョンでなければならず、通常の>依存関係でなければなりません。このシナリオでNuGetがより良いストーリーを提供すると、問題は解決されます。 – JimEvans