Selenium webdriver 在Windows计算机中以编程方式启动appium服务器

Selenium webdriver 在Windows计算机中以编程方式启动appium服务器,selenium-webdriver,appium,Selenium Webdriver,Appium,我现在使用的是Windows 8.1和appium 1.4.16,我想升级appium,所以我只是从控制面板中卸载了1.4.16,然后使用 npm install -g appium 当我跑的时候 appium -v 它向我展示了1.6.4到现在为止没有问题。 之后,在我的Maven项目中,我希望以编程方式启动appium服务器,但appium没有保存在中 C:/Program文件或C:/ProgramFilex86 如何以编程方式启动appium服务器 我正在使用下面的代码运行appium

我现在使用的是Windows 8.1和appium 1.4.16,我想升级appium,所以我只是从控制面板中卸载了1.4.16,然后使用

npm install -g appium
当我跑的时候

appium -v
它向我展示了1.6.4到现在为止没有问题。 之后,在我的Maven项目中,我希望以编程方式启动appium服务器,但appium没有保存在中

C:/Program文件或C:/ProgramFilex86

如何以编程方式启动appium服务器

我正在使用下面的代码运行appium

Process p = Runtime.getRuntime().exec("\"C:/Program Files/Appium/node.exe\" \"C:/Program Files/Appium/node_modules/appium/bin/Appium.js\" --full-reset --local-timezone");

您可以尝试以下代码:

AppiumServiceBuilder builder = new AppiumServiceBuilder()
            .withAppiumJS(new File("C:\Users\<Username>\node_modules\appium\build\lib\main.js"))
            .withArgument(GeneralServerFlag.APP,  path of your app );
appiumDriverLocalService = builder.build();
appiumDriverLocalService.start();

如果它是通过npm安装的,那么Appium可以编程运行。安装在哪里并不重要。下面的代码模拟了从命令提示符打开它时的手动行为

Runtime runtime = Runtime.getRuntime();
        try {
            runtime.exec("cmd.exe /c start cmd.exe /k \"appium -a 127.0.0.1 -p 4723 --session-override -dc \"{\"\"noReset\"\": \"\"false\"\"}\"\"");
            Thread.sleep(10000);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

根据安装Appium的方式,还有其他几种方法。您可以在这里检查这些-

有3种方法可以实现该场景。 1使用AppiumDriverLocalService

 public void startServer() {
//Set Capabilities
cap = new DesiredCapabilities();
cap.setCapability("noReset", "false");

//Build the Appium service
builder = new AppiumServiceBuilder();
builder.withIPAddress("127.0.0.1");
builder.usingPort(4723);
builder.withCapabilities(cap);
builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
builder.withArgument(GeneralServerFlag.LOG_LEVEL,"error");

//Start the server with the builder
service = AppiumDriverLocalService.buildService(builder);
service.start();
}

public void stopServer() {
service.stop();
}
2将Appium.js与Node.exe一起使用

  public void startServer() {
CommandLine cmd = new CommandLine("C:\\Program Files (x86)\\Appium\\node.exe");
cmd.addArgument("C:\\Program Files (x86)\\Appium\\node_modules\\appium\\bin\\Appium.js");
cmd.addArgument("--address");
cmd.addArgument("127.0.0.1");
cmd.addArgument("--port");
cmd.addArgument("4723");

DefaultExecuteResultHandler handler = new DefaultExecuteResultHandler();
DefaultExecutor executor = new DefaultExecutor();
executor.setExitValue(1);
try {
    executor.execute(cmd, handler);
    Thread.sleep(10000);
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}
}

public void stopServer() {
Runtime runtime = Runtime.getRuntime();
try {
    runtime.exec("taskkill /F /IM node.exe");
} catch (IOException e) {
    e.printStackTrace();
}
}
3使用命令提示符启动Appium服务器

public void startServer() {
Runtime runtime = Runtime.getRuntime();
try {
    runtime.exec("cmd.exe /c start cmd.exe /k \"appium -a 127.0.0.1 -p 4723 --session-override -dc \"{\"\"noReset\"\": \"\"false\"\"}\"\"");
    Thread.sleep(10000);
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}
}
public void stopServer() {
Runtime runtime = Runtime.getRuntime();
try {
    runtime.exec("taskkill /F /IM node.exe");
    runtime.exec("taskkill /F /IM cmd.exe");
} catch (IOException e) {
    e.printStackTrace();
}
}

我觉得这很有帮助,希望有帮助。来源:

是否有其他方法将appium安装到C:/ProgramFilesno..我们正在通过npm进行安装..因此它将仅安装在node_modules文件夹中
public void startServer() {
Runtime runtime = Runtime.getRuntime();
try {
    runtime.exec("cmd.exe /c start cmd.exe /k \"appium -a 127.0.0.1 -p 4723 --session-override -dc \"{\"\"noReset\"\": \"\"false\"\"}\"\"");
    Thread.sleep(10000);
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}
}
public void stopServer() {
Runtime runtime = Runtime.getRuntime();
try {
    runtime.exec("taskkill /F /IM node.exe");
    runtime.exec("taskkill /F /IM cmd.exe");
} catch (IOException e) {
    e.printStackTrace();
}
}