我正在使用FF版本19
直到昨天一切正常,突然今天早上我开始收到此错误,我有与之前运行的完全相同的代码,没有任何改变
错误消息:
Test 'M:.TestCases.12' failed: Failed to start up socket within 45000
OpenQA.Selenium.WebDriverException: Failed to start up socket within 45000
at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.ConnectToBrowser(Int64 timeToWaitInMilliSeconds)
at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Start()
at OpenQA.Selenium.Firefox.FirefoxDriver.StartClient()
at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile, TimeSpan commandTimeout)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxBinary binary, FirefoxProfile profile)
at OpenQA.Selenium.Firefox.FirefoxDriver..ctor(FirefoxProfile profile)
0 passed, 1 failed, 0 skipped, took 145.80 seconds (Ad hoc).
这是我的源代码:
public static IWebDriver GetDriver()
{
switch (Common.BrowserSelected)
{
case "ff":
FirefoxProfile profile = new FirefoxProfile();
profile.SetPreference("network.http.phishy-userpass-length", 255);
profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", url);
drv = new FirefoxDriver(profile);
break;
case "ie":
var options = new InternetExplorerOptions();
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability(CapabilityType.AcceptSslCertificates, true);
drv = new InternetExplorerDriver(options);
break;
case "chrome":
//_driver = new ChromeDriver();
break;
}
return drv;
}
答案 0 :(得分:18)
在Selenium的最新版本中添加了Firefox 19“支持”。因此,由于您使用的是.NET,因此在本文发布时的最新的直接下载是版本2.31.2:
答案 1 :(得分:6)
我在Firefox 43和Selenium 2.48中遇到过这个问题。 当您的Selenium驱动程序服务器以32位进程运行并启动64位版本的Firefox时会发生这种情况。
原因是webdriver服务器尝试连接到端口7055 ,应该由Firefox可执行文件中运行的webdriver打开。但是你可以在www.sysinternals.com的 TcpView 中看到Firefox没有打开这个端口。所以司机等到他的超时(45秒)结束。
即使完全关闭Windows防火墙,也会发生这种情况。
我在互联网上发现的所有帖子都没有帮助:升级Selenium,降级Firefox等。
但是在安装了同样的Firefox 43的32位版本后,它可以工作。我在TcpView中看到Firefox 32位如何正确打开端口:
在我的代码中我使用
FirefoxProfile Prof = new FirefoxProfile();
FirefoxBinary Bin = new FirefoxBinary(sBrowserExe);
mDriver = new FirefoxDriver(Bin, Prof);
sBrowserExe = "C:\Program Files\Mozilla Firefox 43\firefox.exe"
启动了64位版本的Firefox 43,我得到了超时异常。
sBrowserExe = "C:\Program Files (x86)\Mozilla Firefox 43\firefox.exe"
32位版本的Firefox 43已启动,它可以正常工作!
更新:来自Firefox的开发人员现在完全打破了Selenium的支持。 48以上的新Firefox版本需要安装所有扩展的数字签名。
https://wiki.mozilla.org/Addons/Extension_Signing
我不明白为什么Selenium人无法获得当前Selenium驱动程序的签名?
Firefox 47.0版有一个错误,不允许将它与Selenium一起使用。此错误已在版本47.0.1中修复。
48.0及更高版本的Firefox版本不再安装旧的Selenium驱动程序。它们必须使用Marionette(= Gecko)驱动程序自动化。
问题是Marionette仍然是测试版,并且有很多缺少的功能,因此目前没有解决方案来自动化新的Firefox版本。
如您所见,新驱动程序充满了错误:https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver/status
答案 2 :(得分:4)
如果升级Webdriver没有帮助,您可以降级将解决问题的FireFox。
答案 3 :(得分:1)
您使用的是哪个版本的Selenium IDE?尝试降级Firefox版本。 selenium IDE的发行说明在下面的链接中提到。
https://code.google.com/p/selenium/wiki/SeIDEReleaseNotes
希望这有帮助。
答案 4 :(得分:0)
在Nuget包管理器中安装所有更新。重新启动IDE。
不建议降级firefox版本进行测试。但最后一个版本降级听起来不错。
这个解决方案对我有用。