public class AppiumServer {
private Process process = null;
private int port;
private int max;
public AppiumServer(int port, int max){
this.port = port;
this.max = max;
}
public URL getUrl(){
try {
URL url = new URL(new URIBuilder()
.setScheme("http")
.setHost("127.0.0.1")
.setPort(port)
.setPath("/wd/hub").build().toString());
return url;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public boolean startService(){
try {
process = Runtime.getRuntime().exec("cmd /c start appium.cmd --session-override -p "+port);
boolean status = isRunning();
long start = System.currentTimeMillis();
while (!status) {
if(System.currentTimeMillis()-start>max*1000){
return false;
}
status = isRunning();
}
System.out.println("成功启动服务,端口号:");
return true;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
public void stopService(){
WinProcess winprocess = new WinProcess(process);
winprocess.killRecursively();
}
public boolean isRunning(){
boolean flag = false;
CloseableHttpClient client = HttpClients.createDefault();
Gson gson = new Gson();
try {
URI url = new URIBuilder()
.setScheme("http")
.setHost("127.0.0.1")
.setPort(4723)
.setPath("/wd/hub/status").build();
HttpGet get = new HttpGet(url);
InputStream in = client.execute(get).getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = br.readLine())!=null) {
sb.append(line);
}
if(gson.fromJson(sb.toString(), Map.class).get("status").toString().equals("0.0")){
flag = true;
}
} catch (Exception e) {
// e.printStackTrace();
// System.out.println(“寤虹珛get璇锋眰澶辫触”);
}
return flag;
}