无法在45000内启动套接字

时间:2013-03-06 14:24:01

标签: c# firefox selenium-webdriver webdriver

我正在使用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;
        }

5 个答案:

答案 0 :(得分:18)

在Selenium的最新版本中添加了Firefox 19“支持”。因此,由于您使用的是.NET,因此在本文发布时的最新的直接下载是版本2.31.2:

selenium-release.storage.googleapis.com/index.html

答案 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位如何正确打开端口:

Firefox Selenium webdriver Port 7055

在我的代码中我使用

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版本进行测试。但最后一个版本降级听起来不错。

这个解决方案对我有用。