0

目前我有一个奇怪的问题,我刚刚开始进行一些验收测试,然后去 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,版本=1.9.1.8,文化=中性,PublicKeyToken=edbe51ad942a3f5c”或它的依赖项之一。该系统找不到指定的文件。在 OpenQA.Selenium.Firefox.FirefoxDriver.StartClient() 在 OpenQA.Selenium.Firefox.FirefoxDriver..ctor() 在 --FileNotFoundException 在 OpenQA.Selenium.Firefox.FirefoxExtension.Install(String profileDir) 在 OpenQA.Selenium.Firefox。 FirefoxProfile.InstallExtensions() 在 OpenQA.Selenium.Firefox.FirefoxProfile.WriteToDisk() 在 OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start() 在 OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()

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

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

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

  • Windows 7 专业版 64 位
  • Visual Studio 2010 高级版(带有 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

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

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

然后我的问题开始了......我没有意识到的是在单元测试项目中编写测试,Resharper 很高兴地将 WebDriver dll 包含在我的引用中,但我运行它时认为它是在验收测试项目中,意味着列出的程序集不可用。

无论如何,这里没有真正的问题,但是以防万一有人愚蠢到可以和我做同样的事情,我将把这个问题留在这里,这样人们就可以指出并嘲笑使用错误 Class1.cs 文件的人:)

于 2012-03-23T11:33:09.260 回答
2

Selenium 必然会使用特定版本的Newtonsoft.Jsonand DotNetZipCastle.Core如果您正在使用支持类,则可能)。卸载它们中的每一个,然后通过 NuGet 卸载 Selenium 包并重新安装 Selenium。安装后,不要更新依赖项,除非你更新 Selenium(无论如何它都会为你做这件事)。

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

于 2012-03-23T10:58:34.103 回答