17

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

5 回答 5

18

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

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

于 2013-03-06T15:14:07.087 回答
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 网络驱动程序端口 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 中修复。

Firefox 48.0 及以上版本不再安装旧的 Selenium 驱动程序。它们必须通过 Marionette (= Gecko) 驱动程序实现自动化。

问题是 Marionette 仍处于测试阶段,并且缺少许多功能,因此目前没有解决方案来自动化新的 Firefox 版本。

正如您在此处看到的,新驱动程序充满了错误:https ://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver/status

于 2016-03-07T17:14:03.230 回答
4

如果升级 Webdriver 没有帮助,您可以降级 FireFox 以解决问题。

于 2013-05-31T09:47:32.620 回答
1

您使用的是哪个版本的 Selenium IDE?尝试降级 Firefox 版本。selenium IDE 的发行说明在下面的链接中提到。

https://code.google.com/p/selenium/wiki/SeIDEReleaseNotes

希望这可以帮助。

于 2013-05-28T05:59:31.547 回答
0

在 Nuget 包管理器中安装所有更新。重启IDE。

不建议降级 firefox 版本进行测试。但最后一个版本降级听起来不错。

这个解决方案对我有用。

于 2016-10-10T11:21:46.180 回答