WCF抛出的Selenium Firefox WebDriver"无法在45000 ms内启动套接字"

时间:2015-06-24 07:47:55

标签: selenium-webdriver

异常堆栈跟踪:

OpenQA.Selenium.WebDriverException:无法在45000毫秒内启动套接字。尝试连接到以下地址:127.0.0.1:7055    在OpenQA.Selenium.Firefox.FirefoxDriverServer.ConnectToBrowser(TimeSpan timeToWait)    在OpenQA.Selenium.Firefox.FirefoxDriverServer.Start()    在OpenQA.Selenium.Firefox.FirefoxDriverCommandExecutor.Execute(命令commandToExecute)    在OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute,Dictionary' 2参数)    在OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)    在OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor,ICapabilities desiredCapabilities)    在DtvAutomation.Selenium.Api.SeleniumFirefoxTest.CreateWebDriver()    在DtvAutomation.Selenium.Api.SeleniumTest' 1.Run()

抛出异常的代码是调用Firefox WebDriver构造函数:

protected override FirefoxDriver CreateWebDriver()
{
    lock(this.syncRoot)
    {
        var ffBinary = new FirefoxBinary();
        var ffProfile = new FirefoxProfile();
        return new FirefoxDriver(
            binary: ffBinary,
            profile: ffProfile,
            commandTimeout: TimeSpan.FromMinutes(2));
    }
}

我正在使用来自Visual Studio 2013的Selenium 2.46(通过NuGet包) - " WCF应用服务"项目。 Firefox是38.0.5(最新)。 当我从Visual Studio(调试模式)启动WCF时,一切正常 - 没有例外。当我将WCF发布到本地IIS时,它会抛出此错误。

我尝试了以下事项:

  • 更新了NuGet包 - 确保我是最新的
  • 将Firefox降级为版本34.0.5
  • 将Firefox升级到最新版本
  • 从防火墙打开端口7055
  • 更改IIS应用程序/应用程序池的凭据,使用管理员帐户
  • 在例外情况下,重新尝试使用其他端口初始化WebDriver

这些似乎都不起作用。 任何想法可能是什么问题?

4 个答案:

答案 0 :(得分:1)

我有同样的问题。将应用程序池标识更改为类似LocalSystem的内容可以解决问题,但您不希望在生产环境中执行此操作。

相反,我在应用程序池的高级设置中找到了一个设置LoadUserProfile,设置为False。如果将其设置为True,则应用程序池会加载用户配置文件,从而摆脱Selenium问题。

您至少需要运行IIS 7,并且可以阅读有关设置here的更多信息。

答案 1 :(得分:0)

我遇到了同样的问题,解决方案是将应用程序池标识从“ApplicationPoolIdentity”切换到更强大的用户。

答案 2 :(得分:0)

我刚遇到类似的问题。我在用 Selenium Webdriver Nuget Package v2.48 Firefox版本41.0

最初,我认为这是FF和Webdriver之间版本冲突的问题,我将Webdriver升级到此版本。没有固定的。 接下来,我将FF降级到31.0。没有固定的。 第三,我想到了最近的变化是什么,而这就是我的这行代码

p.SetPreference("webdriver.log.file", "/tmp/firefox_console");

在这段代码中

            FirefoxProfile p = new FirefoxProfile();
            //p.SetPreference("webdriver.log.file", "/tmp/firefox_console");
            //p.SetPreference("dom.ipc.plugins.flash.disable-protected-mode", true);
            driver = new FirefoxDriver(p);
            driver.Manage().Window.Maximize();

评论出SetPreference方法= 成功后! Firefox按预期开放。

答案 3 :(得分:-1)

我认为firefox webdriver超时的问题状态。您可以使用包含Firefox配置文件和TimeSpan的以下内容,这可能会减少Firefox Web驱动程序的超时。

IWebDriver driver = new FirefoxDriver(new FirefoxBinary(), 
                                      new FirefoxProfile(), 
                                      TimeSpan.FromSeconds(180));