Простой тест на селен дает ошибку XHR: 404 - PullRequest
0 голосов
/ 11 октября 2010

Я использую selenium-rc с C # для тестирования моего приложения asp.net mvc2.В настоящее время все, что я делаю, это открываю домашнюю страницу с помощью selenium RC.

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

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

static void Main(string[] args)
    {
        try
        {
            var _selenium = new DefaultSelenium("localhost", 1234, "*chrome", "http://localhost:6666");
            _selenium.Start();
            _selenium.Open("/");

            try
            {
                _selenium.Stop();
            }
            catch (Exception)
            {
                // Ignore errors if unable to close the browser
            }

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
        Console.WriteLine("Done.");
        Console.ReadKey();

    }

это происходит с ошибкой "ОШИБКА XHR: URL = / localhost: 6666 / Response_Code = 404 Error_Message = Не найдено в сеансе 5f2e59798ae74e7cb741d50cae7e817a"

, и если вы посмотрите в запущенной консоли селенасм.

15:53:16.238 INFO - Allocated session 5f2e59798ae74e7cb741d50cae7e817a for http://localhost:6666, launching...
15:53:16.265 INFO - Preparing Firefox profile...
15:53:18.325 INFO - Launching Firefox...
15:53:20.977 INFO - Got result: OK,5f2e59798ae74e7cb741d50cae7e817a on session 5f2e59798ae74e7cb741d50cae7e817a
15:53:20.980 INFO - Command request: open[/, ] on session 5f2e59798ae74e7cb741d50cae7e817a
15:53:22.654 INFO - Got result: XHR ERROR: URL = http://localhost:6666/ Response_Code = 404 Error_Message = Not Found on session 5f2e59798ae74e7cb741d50cae7e817a

Интересные вещи, которые я пробовал:

изменить сайт на "google" - тогда мой тест работает
изменить сайт на "google" порт 80, затем онне работает.
переместил мой сайт из cassini в iis 7 - не работал
сделал мой сайт сайтом по умолчанию на iis 7, например http://localhost/ - не работал
Я использовал fiddlerчтобы посмотреть сеанс - все запросы возвращаются успешно.
Я пытался передать -avoidProxy и -ensureCleanSession при запуске сервера RC.Ничего заметного не изменилось.

Если я переконфигурирую селен для использования порта по умолчанию, я получаю следующее исключение, повторяющееся снова и снова (один раз каждые 10 секунд / каждый раз разный идентификатор сеанса).Это не происходит, как только я изменил порт по умолчанию, но я включил его на всякий случай.

16:26:38.019 WARN - POST /selenium-server/driver/?seleniumStart=true&localFrameAddress=top&seleniumWindowName=&uniqueId=sel_48694&sessionId=a87b8d6a9e444a5485a5044ef6370e2d&counterToMakeURsUniqueAndSoStopPageCachingInTheBrowser=1286810798016&sequenceNumber=4115 HTTP/1.1
java.lang.RuntimeException: sessionId a87b8d6a9e444a5485a5044ef6370e2d doesn't exist; perhaps this session was already stopped?
    at org.openqa.selenium.server.FrameGroupCommandQueueSet.getQueueSet(FrameGroupCommandQueueSet.java:220)
    at org.openqa.selenium.server.SeleniumDriverResourceHandler.handleBrowserResponse(SeleniumDriverResourceHandler.java:165)
    at org.openqa.selenium.server.SeleniumDriverResourceHandler.handle(SeleniumDriverResourceHandler.java:131)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1530)
    at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1482)
    at org.openqa.jetty.http.HttpServer.service(HttpServer.java:909)
    at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
    at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
    at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
    at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:245)
    at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:357)
    at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

Кто-нибудь может пролить свет?

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Я использую C # и у меня была похожая проблема с методом selenium.open.Я ссылался на ветку haroonzone , размещенную в его ответе выше.и сделали следующие изменения в моем коде

Объявите selenium как

private DefaultSelenium selenium;

вместо

private ISelenium selenium;

и вызовите метод открытия как

    selenium.Processor.DoCommand("open", new String[] { YOUR_URL, "true" });

вместо

    selenium.Open("YOUR_URL");

Кроме того, вы можете позвонить

selenium.SetTimeout("600000");

до DoCommand

1 голос
/ 13 октября 2010

Какую версию Selenium Server вы используете?Мы получаем эту проблему с Selenium Server 2.0a2.Это исправлено в более поздних версиях Selenium, поэтому, если вы загрузите последнюю версию Selenium Server и запустите этот тест для нее, вы не получите исключение XHR.Но если вы не можете обновить версию селен, то вы можете сделать следующее.Фрагмент кода на Java, вы можете иметь подобное в C #.

Проблема в методе selenium.open.Вы можете найти более подробную информацию по следующему URL.http://code.google.com/p/selenium/issues/detail?id=408

selenium = new DefaultSelenium("localhost", port, browserString, url) {
        public void open(String url) {
            commandProcessor.doCommand("open", new String[] {url,"true"});
        }
    };
...