如何使用apache commons exec运行selenium独立服务器作为集线器?

时间:2013-07-27 12:17:21

标签: java apache-commons-exec selenium-server

我正在尝试将selenium-standalone-server作为java程序的中心。我曾尝试使用ProcessBuilder和Process。我无法这样做。然后我找到了Apache Commons exec库。我能够启动selenium服务器。但是,当我使用以下代码时,我无法将服务器作为集线器运行。我试图通过eclipse运行这段代码。

package selenium.tool.utils;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;

public class HubRunner {

public HubRunner(String portNumber) {
    try {
        String cmd = "java";

        CommandLine cmdline = CommandLine.parse(cmd);
        cmdline.addArgument("-jar");
        cmdline.addArgument("selenium-server-standalone-2.33.0.jar");
        cmdline.addArgument("-role hub", false);
        cmdline.addArgument("-port 5454", false);

        System.out.println(cmdline.toString());

        DefaultExecutor exe = new DefaultExecutor();
        exe.execute(cmdline);
    } catch (Exception ex) {
        System.err.println(ex.getMessage());
    }
}

public static void main(String[] args) {
    HubRunner hr = new HubRunner("8888");
}
}

理想情况下,此程序应启动服务器作为集线器。但是,它没有做到。它省略了'-role hub'和'-port 5454'参数。

我得到以下输出:

  

java -jar selenium-server-standalone-2.33.0.jar -role hub -port 5454
  2013年7月28日下午10:42:32 org.openqa.grid.selenium.GridLauncher main
  信息:启动独立服务器
  22:42:33.468 INFO - Java:Sun Microsystems Inc. 14.0-b16
  22:42:33.470信息 - 操作系统:Linux 2.6.33.3-85.fc13.i686.PAE i386
  22:42:33.520 INFO - v2.33.0,Core v2.33.0。根据修订版4e90c97建造   22:42:34.111 INFO - RemoteWebDriver实例应连接到:http://127.0.0.1:4444/wd/hub
  22:42:34.115 INFO - 版本Jetty / 5.1.x
  22:42:34.117 INFO - 启动HttpContext [/ selenium-server / driver,/ selenium-server / driver]
  22:42:34.119 INFO - 启动HttpContext [/ selenium-server,/ selenium-server]
  22:42:34.120 INFO - 启动HttpContext [/,/]
  22:42:34.182 INFO - 已启动org.openqa.jetty.jetty.servlet.ServletHandler@13c468a
  22:42:34.183 INFO - 启动HttpContext [/ wd,/ wd]
  22:42:34.200 INFO - 在0.0.0.0:4444上启动SocketListener
  22:42:34.200 INFO - 已开始org.openqa.jetty.jetty.Server@15e83f9

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我通过使用shell文件解决了这个问题。我编写了命令来启动.sh文件中的selenium hub。然后我做了以下的事情:

String cmd = "bash";
CommandLine cmdLine = new CommandLine(cmd);
cmdLine.addArgument("./src/main/resources/scripts/hub_start.sh");
cmdLine.addArgument(portNumber);
executor.execute(cmdLine);

因此,我能够执行shell文件并启动selenium-hub。