通过命令行启动 Appium Java 脚本

Launch Appium Java script through command line

在 Android Studio 中,我有 2 个模块,一个用于我的 Android 应用程序,另一个用于我的 Appium 东西,我在其中使用 Gradle 连接到 http://127.0.0.1:4723/wd/hub获取所有需要的依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'junit:junit:4.12'
    compile 'io.appium:java-client:4.1.2'
    compile 'com.googlecode.json-simple:json-simple:1.1.1'
    compile 'org.apache.httpcomponents:httpclient:4.5.1'
    compile 'commons-lang:commons-lang:2.6'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.google.http-client:google-http-client:1.21.0'
    compile 'com.testdroid:testdroid-api:2.9'
    compile 'com.google.http-client:google-http-client-jackson2:1.21.0'
}

我可以使用 Android Studio 启动这个 Appium 模块,创建一个新的应用程序配置并选择主 class 和模块。

但我想从命令行 运行 相同的模块,因为我想将此步骤导出到 IC 系统(在本例中为 Bitrise)。

如果我在启动 Appium JAVA 应用程序时分析 Android Studio 日志,我会看到如下内容:

"C:\Program Files\Android\Android Studio\jre\bin\java" -Didea.launcher.port=7532 
"-Didea.launcher.bin.path=C:\Program Files\Android\Android Studio\bin" -Dfile.encoding=UTF-8 
-classpath "C:\Program Files\Android\Android Studio\jre\jre\lib\charsets.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\cldrdata.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\dnsns.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\jaccess.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\localedata.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\nashorn.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\sunec.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\sunmscapi.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\ext\zipfs.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\jce.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\jsse.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\management-agent.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\resources.jar;C:\Program Files\Android\Android Studio\jre\jre\lib\rt.jar;D:\Users\user\Documents\Android\AndroidStartingProject\appiumlib\build\classes\main;C:\Users\user\.gradle\caches\modules-2\files-2.1\junit\junit.1273d150c0dc1fefe998f834810d68f278ea58ec\junit-4.12.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\io.appium\java-client.1.2\d6cd75553b08a9f4bf478842e3b005d9339c2bea\java-client-4.1.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.googlecode.json-simple\json-simple.1.1\c9ad4a0850ab676c5c64461a05ca524cdfff59f1\json-simple-1.1.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-lang\commons-lang.6\ce1edb914c94ebc388f086c6827e8bdeec71ac2\commons-lang-2.6.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.code.gson\gson.71f548c85fa49f330cecbb1875893f971b33c4e\gson-2.7.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.http-client\google-http-client.21.0631630fe1276d4d6d6397bb07d53a4e4fec278\google-http-client-1.21.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.testdroid\testdroid-api.9dc64817de37ec5f063bb8b92572b013b6021c86\testdroid-api-2.9.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.http-client\google-http-client-jackson2.21.0ce17bdd15fff0fd8cf359757f29e778fc7191ad\google-http-client-jackson2-1.21.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.hamcrest\hamcrest-core.3a25dc3219429f0e5d060061f71acb49bf010a0\hamcrest-core-1.3.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-java.53.1\d90f85f4f389aa78b2d207ca1bfcca3fdefb71f0\selenium-java-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.guava\guava.0ce200f6b23222af3d8abb6b6459e6c44f4bb0e9\guava-19.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-validator\commons-validator.5.1d05a46e8f064b300657f751b5a98c62807e2a0\commons-validator-1.5.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-lang3.4fe28b9518e58819180a43a850fbc0dd24b7c050\commons-lang3-3.4.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\cglib\cglib-nodep.2.4c972dee25a436b32c6027e848287ff47ed6750\cglib-nodep-3.2.4.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework\spring-context.3.2.RELEASE\e52782b824e097c3b1586b497fc6be0e95020770\spring-context-4.3.2.RELEASE.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.aspectj\aspectjweaver.8.9\db28774f477f07220eac18d5ec9c4e01f48589d7\aspectjweaver-1.8.9.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.code.findbugs\jsr305.3.9719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf\jsr305-1.3.9.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sf.json-lib\json-lib.46743e0d12df4e785e62b48618cee169b2ae546\json-lib-2.4-jdk15.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.api-client\google-api-client.18.0-rcb0d00b78197d8a3047751443c09538117d188b\google-api-client-1.18.0-rc.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\javax.xml.stream\stax-api.0-2\d6337b0de8b25e53e81b922352fbea9f9f57ba0b\stax-api-1.0-2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations.6.0\a0990e2e812ac6639b6ce955c91b13228500476e\jackson-annotations-2.6.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core.1.3\f6c3aed1cdfa21b5c1737c915186ea93a95a58bd\jackson-core-2.1.3.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-chrome-driver.53.1\e8bb28896547d8bb6d9c11e4b103be563119fc5d\selenium-chrome-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-edge-driver.53.1d7ce00b6d53fd2feebd12ae831c1b35e6577e96\selenium-edge-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\htmlunit-driver.21c19c164835580db1d46887b43392dae0c255d50\htmlunit-driver-2.21.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-firefox-driver.53.1b1aa0babfb577310689a59b2ace7f342d40d70b\selenium-firefox-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-ie-driver.53.1c8e86d544b39026c0f803ec3c863a144995ad6\selenium-ie-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-safari-driver.53.11e322601f56f1867e665bcb0942e154277b0cd\selenium-safari-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-support.53.1\af951906201e898e1d35a9ff63b297bb633d1d03\selenium-support-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-leg-rc.53.1ac994ea069b57e126e222374ed3ebbc85a08529\selenium-leg-rc-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-beanutils\commons-beanutils.9.2a87d845ad3a155297e8f67d9008f4c1e5656b71\commons-beanutils-1.9.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-digester\commons-digester.8.1dec9b9c7ea9342d4dbe8c38560080d85b44a015\commons-digester-1.8.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-logging\commons-logging.2bfc12adfe4842bf07b657f0369c4cb522955686\commons-logging-1.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\commons-collections\commons-collections.2.2ad72fe39fa8c91eaaf12aadb21e0c3661fe26d5\commons-collections-3.2.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework\spring-aop.3.2.RELEASE\caef216e995f565dd4ab165ec5918ff44487615d\spring-aop-4.3.2.RELEASE.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework\spring-beans.3.2.RELEASEe87f48f65a33a017f2dd027911947a28be29f93\spring-beans-4.3.2.RELEASE.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework\spring-core.3.2.RELEASE\fd2f3cf45d3c84f293cb7ee3ab7d24c979495552\spring-core-4.3.2.RELEASE.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.springframework\spring-expression.3.2.RELEASE76acd4dde9d186b7f882edce3131dc62dcb590\spring-expression-4.3.2.RELEASE.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sf.ezmorph\ezmorph.0.6e55d2a0253ea37745d33062852fd2c90027432\ezmorph-1.0.6.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-remote-driver.53.1b049195915b0120259a063db049e1ffa874550e\selenium-remote-driver-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.apache.commons\commons-exec.3dfb9facd0830a27b1b5f29f84593f0aeee7773b\commons-exec-1.3.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sourceforge.htmlunit\htmlunit.21e752dae0006ad516bf6f4138316db7b262912d0\htmlunit-2.21.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna.1.0c12d070e602efd8021891cdd7fd18bc129372d4\jna-4.1.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.java.dev.jna\jna-platform.1.0457ad1cf75c2c16763330de5565a0e67b4bc0a\jna-platform-4.1.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\io.netty\netty.5.7.Final1465e6dfc89d7c78d21de6a9747b6046cb5403\netty-3.5.7.Final.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.seleniumhq.selenium\selenium-api.53.1\b00ff9f84bfa214fda742c1287a06d447e92910e\selenium-api-2.53.1.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\xalan\xalan.7.2\d55d3f02a56ec4c25695fe67e1334ff8c2ecea23\xalan-2.7.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpmime.5.2b4c53dd9b6761024258de8f9240c3dce6ea368\httpmime-4.5.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sourceforge.htmlunit\htmlunit-core-js.1716d68f449d42f69faf4ee255aa31b03e4f7dd5\htmlunit-core-js-2.17.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sourceforge.htmlunit\neko-htmlunit.21\a714aa20a2a6e04ada63805e1a16ad0540aa65e\neko-htmlunit-2.21.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\net.sourceforge.cssparser\cssparser[=12=].9.18c015378d27b5e245a5deb7a324c7e716b4706a\cssparser-0.9.18.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.eclipse.jetty.websocket\websocket-client.2.15.v20160210\ca9769107f3b8111102c5d4f482122dd116fb711\websocket-client-9.2.15.v20160210.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\xalan\serializer.7.2247f3bb052ee068971393bdb83e04512bb1c3c\serializer-2.7.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\xerces\xercesImpl.11.0bb329db1cfc4e22462c9d6b43a8432f5850e92c\xercesImpl-2.11.0.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.w3c.css\sac.3\cdb2dcb4e22b83d6b32b93095f644c3462739e82\sac-1.3.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.eclipse.jetty\jetty-util.2.15.v20160210\ccd245541cc63311bdcfe551525bd7d82ea5e92c\jetty-util-9.2.15.v20160210.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.eclipse.jetty\jetty-io.2.15.v20160210a3af41803c12b0f3628ed8927a8cedb42972169\jetty-io-9.2.15.v20160210.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.eclipse.jetty.websocket\websocket-common.2.15.v20160210\ee5616ec65d6c8f05fe16ee4dbb6723b2ebff470\websocket-common-9.2.15.v20160210.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\xml-apis\xml-apis.4.0189d9fada2d3d458c4ba2de349d48780f381ee3\xml-apis-1.4.01.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.eclipse.jetty.websocket\websocket-api.2.15.v20160210\f0340017129a65097824dd62a04b3c887f397dd9\websocket-api-9.2.15.v20160210.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpclient.5.23db77aa8d9b2d68015189df76ab06304406e50\httpclient-4.5.2.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\org.apache.httpcomponents\httpcore.4.4\b31526a230871fbe285fbcbe2813f9c0839ae9b0\httpcore-4.4.4.jar;C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.oauth-client\google-oauth-client.18.0-rc281a66559f60a491748974ac17cec3483b873\google-oauth-client-1.18.0-rc.jar;C:\Program Files\Android\Android Studio\gradle\m2repository\commons-io\commons-io.4\commons-io-2.4.jar;C:\Program Files\Android\Android Studio\gradle\m2repository\commons-codec\commons-codec.10\commons-codec-1.10.jar;C:\Program Files\Android\Android Studio\lib\idea_rt.jar" 

com.intellij.rt.execution.application.AppMain com.mypackage.appium.Appium

如何从(不是 Windows)命令行或 IC 平台中的外部脚本启动相同的脚本?我需要导出模块 JAR 吗?

在本地我使用 Windows 但在 IC 平台中我使用 Ubuntu.

我可以 运行 JAVA 代码作为 Gradle 脚本在我的 build.gradle 文件中创建一个新的 Gradle 任务:

task(runAppium, dependsOn: 'classes', type: JavaExec) {
    main = 'com.mypackage.appium.Appium'
    classpath = sourceSets.main.runtimeClasspath
}

然后启动它:

gradle runAppium

希望对您有所帮助!