简单的 Selen 测试给出 XHR 错误:404

发布于 2024-09-26 23:21:02 字数 3570 浏览 1 评论 0原文

我使用 selenium-rc 和 C# 来测试我的 asp.net mvc2 应用程序。目前我所做的就是用 selenium RC 打开主页。

当我运行测试时,我看到 selenium 远程控制在浏览器中打开,并且我看到我的应用程序在浏览器中正确打开,但 selenium 显示 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 ERROR:URL = / localhost:6666 / Response_Code = 404 Error_Message = 在会话 5f2e59798ae74e7cb741d50cae7e817a" 上找不到

,如果您查看正在运行的 selenium 控制台,您会看到

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 来观看会话 - 所有触发的请求都成功返回。
我尝试在启动 RC 服务器时传递 -avoidProxy 和 -ensureCleanSession 。没有产生任何明显的差异。

如果我重新配置 selenium 以使用默认端口,我会一遍又一遍地重复出现以下异常(每 10 秒一次/每次都有不同的 sessionid)。一旦我更改了默认端口,这种情况就不会发生,但为了以防万一,我将其包括在内。

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)

有人可以透露一些信息吗?

I'm using selenium-rc with C# to test my asp.net mvc2 application. Currently all I am doing is opening the home page with selenium RC.

when I run my test I see the selenium remote control open in a browser and I see my application open correctly in a browser but selenium shows a 404 error and aborts the test.

In an attempt to get this working I have cut the test down to a simple console app and have changed the default selenium port here is my code:

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();

    }

this fails with the error "XHR ERROR: URL = /localhost:6666/ Response_Code = 404 Error_Message = Not Found on session 5f2e59798ae74e7cb741d50cae7e817a"

and if you look in the running selenium console you see

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

Interesting things that I have tried are:

change the site to "google" - then my test works
change the site to "google" port 80 then it doesnt work.
moved my site from cassini to iis 7 - didnt work
made my site the default site on iis 7 eg http://localhost/ - didnt work
I've used fiddler to watch the session - all requests fired return successfully.
I've tried passing -avoidProxy and -ensureCleanSession when starting the RC server. Hasn't made any noticable difference.

If I reconfigure selenium to use the default port I get the following exception repeated over and over (once every 10 seconds / different sessionid each time). This doesn't happen once I've changed the default port but i've included it just in case.

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)

Can anybody shed some light?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无敌元气妹 2024-10-03 23:21:02

我正在使用 C#,并且 selenium.open 方法也有类似的问题。我已经引用了他在上面的回答中发布的帖子haroonzone。并在我的代码中进行了以下更改

声明 selenium 作为

private DefaultSelenium selenium;

代替

private ISelenium selenium;

并调用 open 方法作为

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

代替

    selenium.Open("YOUR_URL");

此外,您可能想

selenium.SetTimeout("600000");

在 DoCommand 之前调用

I am using C# and had similar problem with selenium.open method. I have refered the thread haroonzone posted in his answer above. and have made following changes in my code

Declare selenium as

private DefaultSelenium selenium;

instead of

private ISelenium selenium;

and call open method as

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

instead of

    selenium.Open("YOUR_URL");

Additionally, you may want to call

selenium.SetTimeout("600000");

before DoCommand

π浅易 2024-10-03 23:21:02

您使用什么版本的 Selenium 服务器?我们在 Selenium Server 2.0a2 中遇到了这个问题。它在更高版本的 Selenium 中得到了修复,因此如果您下载最新版本的 Selenium Server 并对其运行此测试,那么您将不会遇到 XHR 异常。但如果您无法更新 selenium 版本,那么您可以执行以下操作。代码片段是用 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"});
        }
    };

What version of Selenium Server are you using? We get this problem with Selenium Server 2.0a2. It is fixed in later versions of Selenium, so if you download the latest version of the Selenium Server and run this test against it then you wont get the XHR exception. But if you cannot update the selenium version then you can do the following. The code snippet is in Java you can have a similar in C#.

The problem is with the selenium.open method. You can find more information on the following 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"});
        }
    };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文