0

現在、奇妙な問題が発生しています。いくつかの受け入れテストを開始したばかりで、最新の Selenium Webdriver を NUGet に移動しました。正常にインストールされ、すべてが機能していることを証明する簡単なテストを作成しました。

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

このプロジェクトは、.net 4 を使用した単なるデフォルトのクラス ライブラリであり、すべてが含まれており、Resharpers テスト ランナーを介してテストをビルドおよび実行しました。次に、以下のエラーが発生しました。

OpenQA.Selenium.WebDriverException : Firefox への接続中にエラーが発生しました ----> System.IO.FileNotFoundException : ファイルまたはアセンブリを読み込めませんでした 'Ionic.Zip, Version=1.9.1.8, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません。OpenQA.Selenium.Firefox.FirefoxDriver.StartClient() で OpenQA.Selenium.Firefox.FirefoxDriver..ctor() で --FileNotFoundException で OpenQA.Selenium.Firefox.FirefoxExtension.Install(String profileDir) で OpenQA.Selenium.Firefox で。 OpenQA.Selenium.Firefox.FirefoxProfile.WriteToDisk() の FirefoxProfile.InstallExtensions() OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start() の OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()

私は少し困惑し、ライブラリの .net 3.5 バージョンを使用する必要があるのではないかと考えましたが、同じエラーはありませんでした。次に、.net 4 に戻って、プロパティで SpecificVersion を使用するようにアセンブリに指示しようとしましたが、まだ運がありません。

x86用にビルドしていて、firefoxがデフォルトの場所にインストールされていることを確認し、firefoxプロファイルにexeの場所へのリンクを提供し、firefoxバイナリを作成して、どこを見るかを伝えましたが、まだうまくいきません. 次に、NUGet バージョンを削除し、Web サイトからクライアント ドライバーのバイナリを取得しましたが、同じ問題が発生しました。

バージョンを切り替えてさまざまな CPU タイプ用にビルドしようとした後、私はアイデアがありません。このような問題についてはほとんど文書化されていないため、役に立つ場合に備えて他の情報を次に示します。

  • Windows 7 プロフェッショナル 64 ビット
  • Visual Studio 2010 Premium (Resharper 6 を使用)
  • Firefox 11 (デフォルトの場所にインストール)

Internet Explorer ドライバーを使用して、Firefox 固有の問題ではないことを確認しようとしましたが、以下に示す別のエラーが表示されます。

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時間を無駄にしました:(

4

2 に答える 2

3

笑わずにはいられないけど、中は泣いています。

これはおそらくこれまでで最も愚かな新人の間違いの1つであり、私は自分の問題に簡単に気付くはずでした。私は2つの新しいプロジェクトを作成しました。1つはいくつかの新しい単体テストを収容するためのもので、もう1つは受け入れテストを収容するためのものです。次に、WebDriverのすべての依存関係を受け入れテストプロジェクトに取り込み、開いているClass1ファイルでテストを行ってすべてが機能することを証明しました。

それから私の問題が始まりました...私が気づかなかったのは、Resharperが参照にWebDriver dllを喜んで含めた単体テストプロジェクトでテストを書いたことでしたが、それが受け入れテストプロジェクトにあると思って実行していました。リストされたアセンブリが利用できなかったことを意味します。

とにかくここには本当の問題はありませんが、誰かが私と同じことをするのに十分愚かである場合に備えて、私はこの質問をここに残して、人々が間違ったClass1.csファイルを使用した男を指差して笑うことができるようにします:)

于 2012-03-23T11:33:09.260 に答える
2

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

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

于 2012-03-23T10:58:34.103 に答える