2013-05-03 68 views
1

我想通过使用java自动化我的硒脚本。 我想要执行的命令是:硒服务器和Java

/usr/bin/java -jar /javalibs/selenium-server/selenium-server-standalone-2.32.0.jar -htmlSuite "*firefox" "http://www.google.com" "/tmp/googlesearchsuite.html" "/tmp/RESUTL.html" 

该命令在终端完美执行我的Mac上。现在我想把它转换成Java;这里是我使用的代码:

public void localRun() { 

    Process p = null; 

    try { 

     String cmd = "/usr/bin/java -jar /javalibs/selenium-server/selenium-server-standalone-2.32.0.jar -debug -htmlSuite \"*firefox\" \"http://www.google.com\" \"/tmp/googlesearchsuite.html\" \"/tmp/RESUTL.html\""; 

     System.out.print("COMMAND: " + cmd); 

     System.out.println(); 

     Runtime runtime = Runtime.getRuntime(); 
     p = runtime.exec(cmd); 
     p.waitFor(); 

     BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream())); 

     String line = null; 

     while ((line = input.readLine()) != null) { 
      System.out.println(line); 
     } 

     line = null; 

     while ((line = error.readLine()) != null) { 
      System.out.println(line); 
     } 

     int exitVal = p.waitFor(); 

    } catch (Exception e) { 
     System.out.println(e.toString()); 
     e.printStackTrace(); 
    } finally { 
     p.destroy(); 
    } 
} 

当我运行Java代码我得到这个日志,奇怪的错误消息(省略整个日志):

testSuite=/lensoo/googlesearchsuite.html 
COMMAND: /usr/bin/java -jar /javalibs/selenium-server/selenium-server-standalone-2.32.0.jar -debug -htmlSuite "*firefox" "http://www.google.com" "/lensoo/googlesearchsuite.html" "/lensoo/RESUTL.html" 
14:49:55.619 INFO - Java: Apple Inc. 20.45-b01-451 
14:49:55.620 INFO - OS: Mac OS X 10.8.3 x86_64 
14:49:55.630 INFO - v2.32.0, with Core v2.32.0. Built from revision 6c40c18 
14:49:55.631 INFO - Selenium server running in debug mode. 
...... 
14:49:55.790 INFO - Started HttpContext[/wd,/wd] 
14:49:55.801 INFO - Started SocketListener on 0.0.0.0:4444 
14:49:55.801 INFO - Started [email protected] 
May 3, 2013 2:49:49 PM org.openqa.grid.selenium.GridLauncher main 
INFO: Launching a standalone server 
Can't find HTML Suite file:/Users/maksim/IdeaProjects/CMPE287-TaaS/"/tmp/googlesearchsuite.html": 
Usage: java -jar selenium-server.jar [-interactive] [options] 

    -port <nnnn>: the port number the selenium server should use 
    (default 4444) 
    -timeout <nnnn>: an integer number of seconds we should allow a 
    clie....... 

这里是我得到的整个消息:http://pastebin.com/QzHeQ0Bm

从命令行和java执行命令有没有区别?如果是,那么执行该命令运行我的Selenium HTML Suite的正确方法是什么。

回答

2

您应该将一个String []作为第二个参数传入您的运行。改变这一点,我相信它会奏效。

String cmd ="/usr/bin/java -jar /javalibs/selenium-server/selenium-server-standalone-2.32.0.jar" 
String[] args = {"my","-arguments","-to","pass","in"}; 
p = runtime.exec(cmd, args); 

我还发现了这个答案,Passing arguments form java program to bash script that call another java programa with the arguments。其中显示了几种运行命令的不同方式。

+0

我只是试过这个,但仍然出现错误。 – Maksim 2013-05-04 00:34:24

+0

它是一样的错误吗? – greedybuddha 2013-05-04 00:37:54

+0

看起来像我明白了。这里是我如何运行该命令: String [] args = new String [] {“bash”,“-c”,“/ usr/bin/java -jar/javalibs/selenium-server/selenium- server-standalone-2.32.0.jar -debug -htmlSuite \“* firefox \”\“http://www.google.com \”\“/ tmp/googlesearchsuite.html \”\“/ tmp/RESUTL.html \“”}; 运行时运行时= Runtime.getRuntime(); p = runtime.exec(args); – Maksim 2013-05-04 02:52:44