我正在尝试使用 genymotion 运行测试脚本,但 Appium 抛出了一些错误

Posted

技术标签:

【中文标题】我正在尝试使用 genymotion 运行测试脚本,但 Appium 抛出了一些错误【英文标题】:I am trying to run test script using genymotion but Appium throwing some error 【发布时间】:2017-07-17 10:25:58 【问题描述】:

请帮帮我

****这是我的代码****

public class demo1 
    public WebDriver driver;
    @Test
    public void test() throws MalformedURLException
    


        String apkpath=("C:\\App\\bookmyshow.apk");
        File app=new File(apkpath);

        final DesiredCapabilities cap = new DesiredCapabilities();

        cap.setCapability(MobileCapabilityType.PLATFORM_NAME,MobilePlatform.android);
        cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4.4");
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Google Nexus 5 - 4.4.4 API 19 - 1080x1920");
        cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
        cap.setCapability("appPackage", "com.bookmyshow.apk"); 
        cap.setCapability("appActivity", "bookmyshow.apk");
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),cap);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        


================================================ ===================================

Appium 错误

================================================ ==========================

使用命令启动 Appium 服务器:C:\Program Files (x86)\Appium\node.exe lib\server\main.js --address 127.0.0.1 --port 4723 --app C:\App\bookmyshow。 apk --no-reset --avd-args 192.168.71.101:5555 --platform-name Android --platform-version 19 --automation-name Appium --log-no-color 信息:欢迎使用 Appium v​​1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d) 信息:Appium REST http 接口监听器开始于 127.0.0.1:4723 信息:[调试] 非默认服务器参数:"app":"C:\App\bookmyshow.apk","address":"127.0.0.1","noReset":true,"logNoColors":true," avdArgs":"192.168.71.101:5555","platformName":"Android","platformVersion":"19","automationName":"Appium" 信息:控制台日志级别:调试 info: --> POST /wd/hub/session "capabilities":"desiredCapabilities":"app":"C:\App\bookmyshow.apk","appPackage":"com.bookmyshow.apk", "appActivity":"bookmyshow.apk","platformVersion":"4.4.4","platformName":"Android","deviceName":"Google Nexus 5 - 4.4.4 API 19 - 1080x1920","requiredCapabilities" :,"desiredCapabilities":"app":"C:\App\bookmyshow.apk","appPackage":"com.bookmyshow.apk","appActivity":"bookmyshow.apk","platformVersion" :"4.4.4","platformName":"Android","deviceName":"Google Nexus 5 - 4.4.4 API 19 - 1080x1920","requiredCapabilities": 信息:客户端用户代理字符串:Apache-HttpClient/4.5.2 (Java/1.8.0_112) 信息:[调试] 使用来自所需上限的本地应用程序:C:\App\bookmyshow.apk 信息:[调试] 创建新的 appium 会话 25722b10-f229-42af-a64c-347ebbe9c25f 信息:启动 android appium 信息:[调试] 获取 Java 版本 信息:Java 版本为:1.8.0_112 info: [debug] 检查 adb 是否存在 信息:[调试] 使用来自 C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe 的 adb 信息:[调试] 使用快速重置?错误的 信息:[调试] 为会话准备设备 info: [debug] 检查应用程序是否实际存在 信息:检索设备 信息:[调试] 尝试查找已连接的 android 设备 信息:[调试]正在连接设备... 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe 设备 信息:[调试] 2 个设备已连接 信息:找到设备 192.168.71.101:5555 信息:[调试] 将设备 ID 设置为 192.168.71.101:5555 信息:[调试] 等待设备准备好并响应 shell 命令(超时 = 5) info: [debug] 执行 cmd: C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe -s 192.168.71.101:5555 wait-for-device 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe -s 192.168.71.101:5555 shell "echo 'ready'" 信息:[调试] 启动 logcat 捕获 信息:[调试] 获取设备 API 级别 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe -s 192.168.71.101:5555 shell "getprop ro.build.version.sdk" 信息:[调试] 设备处于 API 级别 19 信息:设备 API 级别为:19 信息:[调试]为语言提取字符串:默认 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe -s 192.168.71.101:5555 shell "getprop persist.sys.language" 信息:[调试]当前设备persist.sys.language:en 信息:[调试] java -jar "C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\appium_apk_tools.jar" "stringsFromApk" "C:\App\bookmyshow.apk" " C:\Users\Santo\AppData\Local\Temp\com.bookmyshow.apk" en 信息:[调试] 语言“en”没有 strings.xml,获取默认 strings.xml 信息:[调试] java -jar "C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\appium_apk_tools.jar" "stringsFromApk" "C:\App\bookmyshow.apk" " C:\Users\Santo\AppData\Local\Temp\com.bookmyshow.apk" 警告:从 apk 获取 strings.xml 时出错 信息:[调试]线程“main”中的异常 brut.androlib.AndrolibException:无法从文件加载 resources.arsc:C:\App\bookmyshow.apk 在 brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:608) 在 brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:74) 在 brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:66) 在 io.appium.apktools.StringsXML.run(StringsXML.java:84) 在 io.appium.apktools.Main.main(Main.java:31) 原因:brut.directory.DirectoryException:java.util.zip.ZipException:存档不是 ZIP 存档 在 brut.directory.ZipRODirectory.(ZipRODirectory.java:54) 在 brut.directory.ZipRODirectory.(ZipRODirectory.java:37) 在 brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55) 在 brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:605) ... 4 更多 原因:java.util.zip.ZipException:存档不是 ZIP 存档 在 org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory32(ZipFile.java:717) 在 org.apache.commons.compress.archivers.zip.ZipFile.positionAtCentralDirectory(ZipFile.java:672) 在 org.apache.commons.compress.archivers.zip.ZipFile.populateFromCentralDirectory(ZipFile.java:406) 在 org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:206) 在 org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:182) 在 org.apache.commons.compress.archivers.zip.ZipFile.(ZipFile.java:143) 在 brut.directory.ZipExtFile.(ZipExtFile.java:28) 在 brut.directory.ZipRODirectory.(ZipRODirectory.java:52) ... 7 更多

警告:无法获取字符串,仍然继续 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe -s 192.168.71.101:5555 shell "echo '' > /data/local/ tmp/strings.json" info: [debug] 检查 aapt 是否存在 信息:[调试] 使用来自 C:\Users\Santo\AppData\Local\Android\sdk\build-tools\25.0.2\aapt.exe 的 aapt 信息:[调试] 从清单中检索进程。 信息:[调试] 执行 cmd:C:\Users\Santo\AppData\Local\Android\sdk\build-tools\25.0.2\aapt.exe 转储 xmltree C:\App\bookmyshow.apk AndroidManifest.xml 警告:W/zipro (6068):打开存档 C:\App\bookmyshow.apk 时出错:文件无效 错误:转储失败,因为找到了资源 AndroidManifest.xml

info: [debug] 将应用进程设置为:com.bookmyshow.apk 信息:[调试] 由于服务器未使用 --full-reset 启动,因此未卸载应用程序 信息:[调试] 检查 C:\App\bookmyshow.apk 的应用程序证书。 信息:[调试] 执行 cmd:java -jar "C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\verify.jar" C:\App\bookmyshow.apk 信息:[调试] 应用程序未使用调试证书签名。 信息:[调试] 辞职 apk。 信息:[调试] 执行 cmd:java -jar "C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\sign.jar" C:\App\bookmyshow.apk --override 信息:[调试] 停止 logcat 捕获 信息:[调试] Logcat 以代码 null 终止,信号 SIGTERM info: [debug] 发送关闭命令,等待 UiAutomator 停止... 警告:UiAutomator 没有足够快地关闭,称它消失了 信息:[调试] 清理 android 对象 信息:[调试] 清理 appium 会话 错误:无法启动 Appium 会话,错误是:错误:命令失败:C:\WINDOWS\system32\cmd.exe /s /c "java -jar "C:\Program Files (x86)\Appium\node_modules\appium \node_modules\appium-adb\jars\sign.jar" C:\App\bookmyshow.apk --override" java.util.zip.ZipException:打开 zip 文件时出错 java.util.zip.ZipException:打开 zip 文件时出错 在 java.util.zip.ZipFile.open(本机方法) 在 java.util.zip.ZipFile.open(本机方法) 在 java.util.zip.ZipFile.(ZipFile.java:219) 在 java.util.zip.ZipFile.(ZipFile.java:149) 在 java.util.zip.ZipFile.(ZipFile.java:149) 在 java.util.jar.JarFile.(JarFile.java:166) 在 java.util.jar.JarFile.(JarFile.java:145) 在 s.Sign.sign(Sign.java:441) 在 s.Sign.main(Sign.java:532)

at ChildProcess.exithandler (child_process.js:751:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1016:16)
at Process.ChildProcess._handle.onexit (child_process.js:1088:5)

info: [debug] Responding to client with error: "status":33,"value":"message":"A new session could not be created. (Original error: Command failed: C:\WINDOWS \system32\cmd.exe /s /c \"java -jar \"C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\sign.jar\" C:\App\ bookmyshow.apk --override\"\njava.util.zip.ZipException: 打开 zip 文件时出错\r\n\tat java.util.zip.ZipFile.open(Native Method)\r\n\tat java.util .zip.ZipFile.(ZipFile.java:219)\r\n\tat java.util.zip.ZipFile.(ZipFile.java:149)\r\n\tat java.util.jar.JarFile.(JarFile. java:166)\r\n\tat java.util.jar.JarFile.(JarFile.java:145)\r\n\tat s.Sign.sign(Sign.java:441)\r\n\tat s .Sign.main(Sign.java:532)\r\n)","killed":false,"code":1,"signal":null,"cmd":"C:\WINDOWS\system32\cmd. exe /s /c \"java -jar \"C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\sign.jar\" C:\App\bookmyshow.apk -- override\"","origValue":"命令失败:C:\WINDOWS\system32\cmd.exe /s /c \"java -jar \"C: \Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\jars\sign.jar\" C:\App\bookmyshow.apk --override\"\njava.util.zip.ZipException: 错误打开 zip 文件\r\n\tat java.util.zip.ZipFile.open(Native Method)\r\n\tat java.util.zip.ZipFile.(ZipFile.java:219)\r\n\tat java .util.zip.ZipFile.(ZipFile.java:149)\r\n\tat java.util.jar.JarFile.(JarFile.java:166)\r\n\tat java.util.jar.JarFile.( JarFile.java:145)\r\n\tat s.Sign.sign(Sign.java:441)\r\n\tat s.Sign.main(Sign.java:532)\r\n"," sessionId":null 信息:

================================================ ============================

**图片** Android Setting

================================================ =================

CMD:adb 设备

C:\Users\Santo>C:\Users\Santo\AppData\Local\Android\sdk\platform-tools\adb.exe 设备 附加设备列表 192.168.71.101:5555 设备

【问题讨论】:

【参考方案1】:

您没有在@Test 下设置所需的功能。创建一个单独的 setUp() 函数来设置所需的功能,并且该函数需要注释为 @Before。

【讨论】:

以上是关于我正在尝试使用 genymotion 运行测试脚本,但 Appium 抛出了一些错误的主要内容,如果未能解决你的问题,请参考以下文章

React Native Android 和 Genymotion

如何编写 genymotion 模拟器来启动给定的无头 avd?

正在加载 Genymotion 库 Genymotion 目录:/Applications/Genymotion.app/Contents/MacOS 尝试初始化引擎 Initialize Engin

在 Genymotion 中测试打盹功能(Android 6.0 Marshmallow)

在滚动之前,RecyclerView项目有时无法正确显示(仅限Genymotion平板电脑)

如何将 Flutter 与 Genymotion 连接起来?