我在尝试运行 Appium 测试时遇到错误

Posted

技术标签:

【中文标题】我在尝试运行 Appium 测试时遇到错误【英文标题】:i am getting an error trying to run Appium test 【发布时间】:2020-07-06 03:23:28 【问题描述】:

运行以下代码:

    public static void opencalculator() throws MalformedURLException  

        DesiredCapabilities cap=new DesiredCapabilities();

        cap.setCapability("deviceName", "android x86");
        cap.setCapability("udid", "emulator-5554");
        cap.setCapability("platformName", "Android");
        cap.setCapability("platformVersion", "7.1.1");
        cap.setCapability("appPackage", "com.android.calculator2");
        cap.setCapability("appActivity", "com.android.calculator2.Calculator");

        URL url=new URL("http://127.0.0.1:4722/wd/hub");

        driver =new AndroidDriver<MobileElement>(url, cap);
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

给我这个错误:

java.lang.reflect.InvocationTargetException org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。请检查服务器日志以获取更多详细信息。原始错误:处理命令时发生未知的服务器端错误。原始错误:在 PATH 中找不到“adb.exe”。请将 ANDROID_HOME 或 ANDROID_SDK_ROOT 环境变量设置为正确的 Android SDK 根目录路径。 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03'

考虑到我根据上面的消息更改了很多路径

这是修改路径后出现的错误

java.lang.reflect.InvocationTargetException org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。请检查服务器日志以获取更多详细信息。原始错误:处理命令时发生未知的服务器端错误。原始错误:执行 adbExec 时出错。原始错误:'Command 'C:\Users\ahmed\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 install -r C:\Users\ahmed\AppData\Roaming\ npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' 退出,代码为 1';标准错误:'adb:安装失败 C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk:失败 [INSTALL_PARSE_FAILED_NO_CERTIFICATES :无法从 /data/app/vmdl541246303.tmp/base.apk 收集证书:META-INF/CERT.SF 在 /data/app/vmdl541246303.tmp/base 中对 javax/annotation/meta/Exclusive.java 的摘要无效.apk]';代码:'1' 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'WAER',ip:'192.168.178.83 ', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.5' 驱动程序信息: driver.version: AndroidDriver remote stacktrace: UnknownError: An处理命令时发生未知的服务器端错误。原始错误:执行 adbExec 时出错。原始错误:'Command 'C:\Users\ahmed\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 install -r C:\Users\ahmed\AppData\Roaming\ npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' 退出,代码为 1';标准错误:'adb:安装失败 C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk:失败 [INSTALL_PARSE_FAILED_NO_CERTIFICATES :无法从 /data/app/vmdl541246303.tmp/base.apk 收集证书:META-INF/CERT.SF 在 /data/app/vmdl541246303.tmp/base 中对 javax/annotation/meta/Exclusive.java 的摘要无效.apk]';代码:'1' at getResponseForW3CError (C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9) 在 asyncHandler (C: \Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:392:37)构建信息:版本:'3.141.59',修订:'e82be7d358 ',时间:'2018-11-14T08:17:03' 系统信息:主机:'WAER',ip:'192.168.178.83',os.name:'Windows 10',os.arch:'amd64',os .version: '10.0', java.version: '11.0.5' 驱动程序信息: driver.version: AndroidDriver at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:208) at io.appium.java_client .remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217) at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552 ) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGener icMobileDriver.java:41) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 org.openqa.selenium.remote .RemoteWebDriver.startSession(RemoteWebDriver.java:213) 在 io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:336) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) 在 io.appium .java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:37) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:88) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:98) 在 io.appium.java_client .android.AndroidDriver.(AndroidDriver.java:94) at appiumtest.calculatortest.opencalculator(calculatortest.java:47) at appiumtest.calculatortest.main(calculatortest.java:26) 原因:java.lang.reflect.InvocationTargetException .base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorI mpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java: 566) at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186) ... 15 更多原因:org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:执行 adbExec 时出错。原始错误:'Command 'C:\Users\ahmed\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 install -r C:\Users\ahmed\AppData\Roaming\ npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' 退出,代码为 1';标准错误:'adb:安装失败 C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk:失败 [INSTALL_PARSE_FAILED_NO_CERTIFICATES :无法从 /data/app/vmdl541246303.tmp/base.apk 收集证书:META-INF/CERT.SF 在 /data/app/vmdl541246303.tmp/base 中对 javax/annotation/meta/Exclusive.java 的摘要无效.apk]';代码:'1' 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:17:03' 系统信息:主机:'WAER',ip:'192.168.178.83 ', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.5' 驱动程序信息: driver.version: AndroidDriver remote stacktrace: UnknownError: An处理命令时发生未知的服务器端错误。原始错误:执行 adbExec 时出错。原始错误:'Command 'C:\Users\ahmed\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 install -r C:\Users\ahmed\AppData\Roaming\ npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk' 退出,代码为 1';标准错误:'adb:安装失败 C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-server\apks\appium-uiautomator2-server-debug-androidTest.apk:失败 [INSTALL_PARSE_FAILED_NO_CERTIFICATES :无法从 /data/app/vmdl541246303.tmp/base.apk 收集证书:META-INF/CERT.SF 在 /data/app/vmdl541246303.tmp/base 中对 javax/annotation/meta/Exclusive.java 的摘要无效.apk]';代码:'1' at getResponseForW3CError (C:\Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9) 在 asyncHandler (C: \Users\ahmed\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:392:37) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0( Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/ java.lang.reflect.Constructor.newInstance(Constructor.java:490) at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62) at org.openqa.selenium.remote.HandshakeResponse.lambda $getResponseFunction$0(HandshakeResponse.java:30) at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:1 26) 在 java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958) 在 java.base 的 java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) /java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127) 在 java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) 在 java.base/java.util.stream.AbstractPipeline .copyInto(AbstractPipeline.java:488) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java :150) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543) 在 org.openqa。 selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128) ... 20 更多

【问题讨论】:

错误说明了一切。服务器无法运行adb.exe,因为PATH 变量中可能缺少程序adb 的路径。 java.lang.reflect.InvocationTargetException org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。请检查服务器日志以获取更多详细信息。原始错误:处理命令时发生未知的服务器端错误。原始错误:执行 adbExec 时出错。原始错误:'Command 'C:\\Users\\ahmed\\AppData\\Local\\Android\\Sdk\\platform-tools\\adb.exe -P 5037 -s emulator-5554 install -r C:\ \Users\\ahmed\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\a 你能把评论部分的完整错误放在问题中吗?您可能还想查看android adb documention 中的所有 adb 命令和选项。 我已经添加了上面的错误 看起来您的 apk 未正确签名。看看this question and its answers。希望对你有帮助 【参考方案1】:

您需要在运行测试之前设置 Java 和 Android SDK 环境变量

【讨论】:

以上是关于我在尝试运行 Appium 测试时遇到错误的主要内容,如果未能解决你的问题,请参考以下文章

我遇到了这个 selenium 异常:尝试使用 java 和 Appium 运行我的测试时,方法尚未实现

我遇到了这个 selenium 异常:尝试使用 java 和 Appium 运行我的测试时,方法尚未实现

AWS appium ios 测试总是失败

使用Appium网格时,无法使用2个以上的设备执行测试

如何使用 Eclipse 在 Appium 上运行脚本测试?

使用 Appium 测试框架为 Windows 驱动程序编写测试时遇到问题