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

时间:2020-03-25 14:48:18

标签: java selenium-webdriver appium appium-android

运行以下代码:

    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时出错。原始错误:'命令'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'; Stderr:“ 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远程堆栈跟踪:UnknownError:An处理命令时发生未知的服务器端错误。原始错误:执行adbExec时出错。原始错误:'命令'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'; Stderr:“ 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]';代码:asyncHandler(C:\ Users \ ahmed \ AppData \ Roaming \ npm \ node_modules \ appium \ node_modules \ appium-base-driver \ lib \ protocol \ errors.js:804:9)处的代码为'1' \ 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',操作系统名称:'Windows 10',os.arch:'amd64',os .version:'10 .0',java.version:'11 .0.5'驱动程序信息:driver.version:io.appium.java_client.remote.AppiumCommandExecutor $ 1.createSession(AppiumCommandExecutor.java:208)上的io.appium.java_client上的AndroidDriver io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:239)上的.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:217)在org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver。:: )在io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGener io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)上的icMobileDriver.java:41)org.openqa.selenium.remote的io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)上的icMobileDriver.java:41) io.appium.io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:336)上org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:131)上的.RemoteWebDriver.startSession(RemoteWebDriver.java:213) io.appium.java_client.AppiumDriver。(AppiumDriver.java:88)上io.appium.java_client.AppiumDriver。(AppiumDriver.java:98)上io.appium.java_client.DefaultGenericMobileDriver。(DefaultGenericMobileDriver.java:37) .android.AndroidDriver。(AndroidDriver.java:94)位于appiumtest.calculatortest.opencalculator(calculatortest.java:47)位于appiumtest.calculatortest.main(calculatortest.java:26)原因:java的java.lang.reflect.InvocationTargetException .base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法),位于java.base / jdk.internal.reflect.NativeMethodAccessorI java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处的mpl.invoke(NativeMethodAccessorImpl.java:62),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时出错。原始错误:'命令'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'; Stderr:“ 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远程堆栈跟踪:UnknownError:An处理命令时发生未知的服务器端错误。原始错误:执行adbExec时出错。原始错误:'命令'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'; Stderr:“ 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]';代码:asyncHandler(C:\ Users \ ahmed \ AppData \ Roaming \ npm \ node_modules \ appium \ node_modules \ appium-base-driver \ lib \ protocol \ errors.js:804:9)处的代码为'1' \ 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( java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)处的java.base / jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)处的本机方法) org.openqa.selenium.remote.W3CHandshakeResponse.lambda $ errorHandler $ 0(W3CHandshakeResponse.java:62)上的org.openqa.selenium.remote.Handshakebdas.java.lang.reflect.Constructor.newInstance(Constructor.java:490)在org.openqa.selenium.remote.ProtocolHandshake.lambda $ createSession $ 0(ProtocolHandshake.java:1)处的$ getResponseFunction $ 0(HandshakeResponse.java:30) 26)at java.base / java.util.stream.ReferencePipeline $ 3 $ 1.accept(ReferencePipeline.java:195)at java.base / java.util.Spliterators $ ArraySpliterator.tryAdvance(Spliterators.java:958)at java.base /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),位于org.openqa的java.base / java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)的java.base / java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)。 selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)...还有20个

1 个答案:

答案 0 :(得分:0)

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