【问题标题】:Running appium programatically in mac terminal using Java使用 Java 在 mac 终端中以编程方式运行 appium
【发布时间】:2017-07-30 14:42:18
【问题描述】:

我想在 mac 中使用 Java 以编程方式启动 appium 服务器。

谁能帮我编写启动appium的代码。

谢谢..

【问题讨论】:

  • 你使用的是哪个版本的appium
  • Appium 版本 - 1.5.3

标签: ios-ui-automation appium-ios


【解决方案1】:

您可以使用以下代码以编程方式启动 appium 服务器。

appium = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
            .withAppiumJS(new File("/usr/local/lib/node_modules/appium/build/lib/main.js"))
            .usingPort(4723).withIPAddress("127.0.0.1"));
appium.start();

如果你想从终端启动,你可以运行下面的命令

/Applications/Appium.app/Contents/Resources/node/bin/node /Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js

如果您想指定模拟器和应用程序详细信息等,您可以运行以下命令。

node /Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js --address 127.0.0.1 --port 4723 --full-reset 
--device-name "iPhone 6" 
--platform-name iOS 
--platform-version "8.3" 
--app "/My.app"
--browser-name iOS

为此,应将节点可执行文件添加到路径中。

要启动 appium 1.5.3,请通过以下链接。

starting appium 1.5.3 programmatically

【讨论】:

  • 嗨赛,“appium = AppiumDriverLocalService.buildService(new AppiumServiceBuilder() .withAppiumJS(new File("/usr/local/lib/node_modules/appium/build/lib/main.js")) .usingPort(4723).withIPAddress("127.0.0.1")); appium.start();"如果我写了上面的代码,在执行之前我需要在终端中明确地启动“appium”。我不想明确地这样做。
  • 不需要 appium.start();这一步将启动appium
  • 我收到以下异常 ::: io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException: 本地 appium 服务器尚未启动。给定的 Node.js 可执行文件:/Applications/Appium.app/Contents/Resources/node/bin/node 参数:[/Applications/Appium.app/Contents/Resources/node_modules/appium/build/lib/appium.js,- -port, 4723, --address, 0.0.0.0, --log, /Applications/AppiumLogs/log.txt] 在 io.appium.java_client.service.local.AppiumDriverLocalService.start(AppiumDriverLocalService.java:155) 在 com。 kirusa.instavoice.util.AppiumController.appiumSetU
  • 可以查看node.js文件路径
  • 是节点安装并添加到路径
【解决方案2】:

这一行将启动appium:

Runtime.getRuntime().exec("appium");

奖励 - 下一个循环将等待,直到执行命令发出消息

(请注意,它不会检查输出本身,它只会等到有一个输出 - 它对我很有用)

while ((stdInput.readLine()) == null) {
   Thread.sleep(1000);
}

在此之后,您可以在知道 Appium 服务器已启动的情况下继续运行项目

【讨论】:

    【解决方案3】:

    尝试以下操作:

            AppiumDriverLocalService appiumServer = AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
                .withAppiumJS(new File("/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js"))
                .usingPort(4723).withIPAddress("127.0.0.1"));
        appiumServer.start();
    

    【讨论】:

    • 嗨,欢迎来到 Stack Overflow。在回答已经有几个答案的问题时,请务必添加一些额外的见解,说明为什么您提供的回复是实质性的,而不是简单地回应原始发帖人已经审查过的内容。这在您提供的“纯代码”答案中尤其重要。
    猜你喜欢
    • 2014-02-05
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2015-11-03
    • 2019-07-29
    相关资源
    最近更新 更多