Selenium Webdriver 2.20 .net客户端,依赖性问题?

时间:2012-03-23 10:52:42

标签: .net firefox selenium webdriver browser-automation

我目前有一个奇怪的问题,我只是在一些验收测试上开始,然后去了NUGet最新的Selenium Webdriver。安装得很好,只是写了一个快速测试来证明它一切正常:

[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'或其中一个   依赖。该系统找不到指定的文件。在   OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()at   OpenQA.Selenium.Firefox.FirefoxDriver..ctor()at   OpenFA.Selenium.Firefox.FirefoxExtension.Install(String profileDir)中的--FileNotFoundException   OpenQA.Selenium.Firefox.FirefoxProfile.InstallExtensions()at   OpenQA.Selenium.Firefox.FirefoxProfile.WriteToDisk()at   OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()at   OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()

我有点困惑,想到也许我需要使用.net 3.5版本的库,没有运气同样的错误。然后我尝试回到.net 4并告诉程序集在属性中使用SpecificVersion,但仍然没有运气。

确认我正在构建x86并且firefox安装在默认位置,我甚至给firefox配置文件一个指向exe位置的链接,甚至做了一个firefox二进制文件并告诉它在哪里看,仍然没有运气。然后我解雇了NUGet版本并从网站获得了客户端驱动程序二进制文件,同样的问题。

在尝试切换版本并为不同的CPU类型构建之后,我没有想法,很少有关于此类问题的文档记录,所以这里有一些其他信息,因为它很有用。

  • Windows 7 Professional 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个小时:(

2 个答案:

答案 0 :(得分:3)

我忍不住笑了,我在里面哭了。

这可能是有史以来最愚蠢的新手错误之一,我应该很容易注意到我的问题。我做了两个新项目,一个用于容纳一些新的单元测试,一个用于验收测试。然后,我将WebDriver的所有依赖项纳入验收测试项目,并开始在Class1文件中进行测试,该文件是开放的,以证明它一切正常。

然后我的问题开始......我没有意识到的是在单元测试项目中编写测试,Resharper愉快地将WebDriver dll包含在我的参考资料中,但我正在运行它认为它在验收测试中项目,这意味着列出的集合不可用。

无论如何,这里没有真正的问题,但只是因为任何人都愚蠢到和我做同样的事情我会在这里留下这个问题所以人们可以指出并嘲笑那个使用过错误的Class1.cs文件:)

答案 1 :(得分:2)

如果您使用支持类,Selenium必然会使用特定版本的Newtonsoft.JsonDotNetZip(以及可能Castle.Core)。卸载它们,然后通过NuGet卸载Selenium软件包并重新安装Selenium。安装后,除非您更新Selenium(无论如何都会为您执行此操作),否则不要更新依赖项。

还要确保将测试程序集设置为完整的.NET框架,而不是客户端配置文件。