Тест Selenium не проходит на сервере сборки с ошибкой «Нет ответа от сервера» - PullRequest
4 голосов
/ 11 марта 2011

У меня есть простой тест Selenium в рамках проекта тестирования VS2010 следующим образом.

[TestMethod]  
public void MyTestInIE8()  
{  
    IWebDriver driver = new InternetExplorerDriver();  
    try  
    {  
       driver.Navigate().GoToUrl("http://localhost/MyMVC/ABC/DoStuff");
       driver.FindElement((By.Id("Name"))).SendKeys("John");  
       //... run rest of the test  
    }  
    finally  
    {  
       driver.Quit();  
    }  
}  

Это нормально работает на локальном сервере.Однако на сервере сборки происходит сбой со следующим сообщением.... сгенерировано исключение: OpenQA.Selenium.WebDriverException: Нет ответа от сервера для URL http://localhost:4444/session/5e5e9b7a-e05c-40d8-9a20-9cab138b2b87.

Кажется, проблема заключается в вызове метода Quit () в предложении finally.Я пытался передать известный номер порта, т.е. InternetExplorerDriver (8080), но это не имело никакого значения.Драйвер Firefox отлично работает как локально, так и на сервере сборки.Я нашел кого-то, сообщающего о подобной проблеме, но не нашел работающего решенияhttp://groups.google.com/group/webdriver/msg/4347971da4d96e97

Вот мой конфиг.Windows 7 professional SP1, 64 бита.
Webdriver - selenium-dotnet-2.0b2.
IE8.

Мой сервер сборки - Windows Server2008 R2 Standard с IE8.
Спасибо.

Ответы [ 2 ]

5 голосов
/ 08 июня 2011

Для драйвера Internet Explorer требуется некоторая конфигурация IE, как описано в вики проекта . Вам необходимо убедиться, что браузер правильно настроен на вашем сервере сборки.

Проект Selenium был недавно обновлен, чтобы выдать более полезную ошибку в случае, если драйвер IE не настроен должным образом. Обновление до 2.0rc2 даст вам более полезную ошибку.

3 голосов
/ 22 ноября 2011

У меня тоже была эта проблема, и решение, которое я нашел, было немного подождать после использования метода FindElement(), прежде чем воздействовать на элемент.

Примерно так:

var element = driver.FindElement(By.Id("Name"))
Thread.Sleep(200);
element.SendKeys("John");

Видимо, есть некоторые условия гонки, вызванные водителем. В любом случае, это мое предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...