更新到28.0后无法确定当前版本的FireFox

时间:2014-03-19 14:11:44

标签: firefox selenium

当我使用Firefox 28.0运行我的Selenium测试时,我得到:

"类型' OpenQA.Selenium.WebDriverException'的例外情况发生在WebDriver.dll中但未在用户代码中处理

其他信息:无法使用注册表确定当前版本的FireFox,请确保您已正确安装FireFox"

我昨天用Firefox成功运行了测试。

我认为Firefox从昨天开始自动更新到28.0。

今天我收到了上述错误。

我卸载了Firefox并重新安装但我仍然得到了同样的例外。

硒2.40 Firefox 28.0 Gallio和MbUnit 3.4

有关如何修复的任何想法?我想我可以切换到IE进行测试。

3 个答案:

答案 0 :(得分:5)

在调用FireFoxBinary()构造函数时生成错误。

 DriverObj = New FirefoxDriver(New FirefoxBinary(), New FirefoxProfile(), TimeSpan.FromMinutes(10))

对FirefoxBinary的调用工作了三个星期,所以我不确定为什么它决定昨天失败。也许是Firefox自动更新从27到28。

解决方案是将文件路径添加到Firefox二进制文件:

 DriverObj = New FirefoxDriver(New FirefoxBinary("C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"), New FirefoxProfile(), TimeSpan.FromMinutes(10))

答案 1 :(得分:1)

一种可能的解决方案是手动添加正在搜索的注册表项。正常的FireFox构建(非ESR)似乎放置一个标题为“CurrentVersion”的键,其中的字符串值为

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Mozilla \ Mozilla FireFox

目录。测试告诉我,当我放置一个类似于此的键但是在我的系统上安装了ESR版本的字符串值时,Selenium会工作。需要注意的是,由于这个问题相当陈旧,我已经使用Selenium 3.0.1进行了测试。如果你想尝试这个,你的注册表键应该没有引号:

i

请记住,此解决方案可以帮助您解决问题,但每次ESR更新时,您都需要进入并更新密钥值。

答案 2 :(得分:0)

这让我很生气,直到我最终破解它,这是修复我的代码:

        var options = new FirefoxOptions();
        options.BrowserExecutableLocation = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
        IWebDriver driver = new FirefoxDriver(options);