SpecFlow + Selenium2 + ASP.NET MVC + TeamCity не работает - PullRequest
2 голосов
/ 14 июля 2011

У меня есть некоторые функции SpecFlow, которые используют Selenium 2 для автоматизации тестирования пользовательского интерфейса приложения ASP.NET MVC 3. Когда я запускаю их локально, все работает нормально и тесты проходят. После того, как я внес изменения в Git и отправил их в наш удаленный репозиторий, чтобы наш экземпляр TeamCity мог их забрать, тесты запускаются и работают намного дольше, но с ошибкой произойдет следующее.

Test(s) failed. OpenQA.Selenium.WebDriverException : No response from server for url http://localhost:7055/hub/session/1ada0501-154a-45f7-b0a3-487af59f7a0b/timeouts/implicit_wait

Я попытался найти различные решения, но не нашел ничего отдаленно релевантного. Если кто-то может ссылаться на какие-либо ресурсы, которые облегчили бы мою жизнь, пожалуйста, не стесняйтесь делиться ими. Или помогите решить эту проблему.

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Я не знаю ответа, но вот или слесарный код, который работал для нас со следующей настройкой:

  • TeamCity (6.0.3)
  • IIS (из исправленной виртуальной папки)
  • ASP.NET MVC3
  • SeleniumDotNet v2.0.3
  • Драйвер FireFox,
  • Версия Firefox на сервере: 3.6.17
  • TeamCity работает как локальная система (по умолчанию)

Настройка Selenium:

public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(10);

private BrowserContext()
{
    //browser = new InternetExplorerDriver();
    browser = new FirefoxDriver();
    browser.Manage().Timeouts().ImplicitlyWait(DefaultTimeout);
}

Настройка / удаление Firefox с событиями SpecFlow:

        [BeforeScenario]
        public void BeforeWebScenario()
        {
            if (!BrowserContext.IsRunning) 
                BrowserContext.Start();

            BrowserContext.Current.Browser.NavigateTo("/Test/RecreateDatabase");
            BrowserContext.Current.Browser.FindElement(By.ClassName("success-message"));
        }

        [AfterScenario]
        public void AfterWebScenario()
        {
            if (ScenarioContext.Current.TestError != null)
            {
                Console.WriteLine("Browser page source for failing test: {0}",
                    BrowserContext.Current.Browser.PageSource);
            }

            bool browserPerScenario;
            if (bool.TryParse(ConfigurationManager.AppSettings["browserPerScenario"], out browserPerScenario) && browserPerScenario)
                BrowserContext.Stop();
        }

        [AfterTestRun()]
        public static void StopBrowser()
        {
            if (BrowserContext.IsRunning) 
                BrowserContext.Stop();
        }
0 голосов
/ 14 июля 2011

, делая неверные предположения, я думаю, что это преступник:

:7055

Скорее всего, вы используете встроенный сервер разработки ASP.NET локально и работаете на более полнофункциональном веб-сервере (большинствоскорее всего IIS) на другом сервере.Если сервер не работает с нестандартным портом (упомянутым выше портом), произойдет сбой.

Одна вещь, о которой стоит подумать, - это перейти с сервера разработки ASP.NET на IIS (или IIS Express).Затем вы можете настроить сайт с помощью localhost и без порта.

...