【问题标题】:Running selenium 2 tests within Jenkins against a certain selenium instance在 Jenkins 中针对某个 selenium 实例运行 selenium 2 测试
【发布时间】:2011-07-25 20:58:22
【问题描述】:

我正在尝试从 Jenkins 运行无头测试。当我指定 HTML 测试套件时,这适用于 HTML 测试。但现在我想对同一个 selenium 服务器运行 selenium-2 测试。

我试过了:

执行shell:
export DISPLAY=":99" && java -jar /var/lib/selenium/selenium-server.jar

但这似乎一直挂起,直到我手动停止服务器。如何以我的 selenium RC 测试通过 grails 调用的方式启动 selenium 服务器?

【问题讨论】:

    标签: java grails jenkins selenium-webdriver selenium-rc


    【解决方案1】:

    没有特殊的方法可以“启动”任何特定语言使用的 selenium 服务器。当您启动 selenium 服务器时,它将开始在端口上侦听传入请求。您应该在测试中包含一行代码,以将您的测试指向 selenium 服务器。我不知道圣杯。在java中它会是

    Selenium sel = new DefaultSelenium("host","port","browsername","baseurl")
    
    • > host - 启动服务器的机器的IP
    • > port - selenium 服务器正在侦听的端口号。这是 如果您不指定任何内容,通常为 4444
    • > browsername-您希望测试所在的浏览器
    • >运行baseURL——你需要测试的web应用的base URL。

    grails 中的等效方法应该可以帮助您工作。

    编辑 - 启动 selenium 服务器的 JAVA 代码:

        Selenium sel;
        int port=9999;
        public static SeleniumServer server;
            public void startSeleniumServer() throws Exception {
               try {
                ServerSocket serverSocket = new ServerSocket(port);
                serverSocket.close();
                        //Server not up, start it
                        try {
                         RemoteControlConfiguration rcc = new RemoteControlConfiguration();
                         rcc.setPort(port);
                         server = new SeleniumServer(false, rcc);
    
                        } catch (Exception e) {
                            System.err.println("Could not create Selenium Server because of: "
                                    + e.getMessage());
                            e.printStackTrace();
                        }
                        try {
                            server.start();
                            System.out.println("Server started");
                        } catch (Exception e) {
                            System.err.println("Could not start Selenium Server because of: "
                                    + e.getMessage());
                            e.printStackTrace();
                        }
                    } catch (BindException e) {
                        System.out.println("Selenium server already up, will reuse...");
                    }
            }
    
            public void stopSeleniumServer(){
                if (server != null)
                  {
                     try
                     {
                        server.stop();
    
                     }
                     catch (Exception e)
                     {
                        e.printStackTrace();
                     }
                  }
                System.out.println("Selenium server stopped..");
            }
    
        public void startSeleniumRC() throws Exception{
            sel=new DefaultSelenium("localhost",
                    port,
                    "*firefox",
                    "http://www.google.com");
            sel.start();
        }
    
        public void stopSeleniumRC()
        {
            sel.shutDownSeleniumServer();
        }
    

    【讨论】:

    • 我想真正的问题是如何在 Jenkins 中异步启动和停止服务器,以免阻塞序列中的下一个构建步骤。
    • 为什么要在同一个构建中启动服务器?而且,是否有任何理由将服务器作为构建设置启动。如果您单独启动服务器会更好。如果您仍想在一次构建中实现此目的,则应使用代码和测试启动服务器。
    • 我应该能够将它挂钩到 grails 测试阶段事件中。
    猜你喜欢
    • 2013-01-31
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2013-04-10
    • 2015-05-10
    • 2014-11-22
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多