当我使用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进行测试。
版
答案 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);