问题标签 [calabash-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
449 浏览

android - Calabash-Android 似乎所有事情都执行了两次

即使我也将其作为问题发布在葫芦 github 上,我仍将其发布在这里,因为已经 3 周了,我还没有收到任何来自支持的消息。如果您发现我做错了什么,或者您遇到过同样的问题,请告诉我。目前我在 ruby​​ 1.9.3 上运行 Calabash-Android v 0.5.8。我已经在旧版本的 Calabash-Android 中对此进行了测试,但仍然存在同样的问题。

我一直在尝试研究如何提高我设置的测试的性能,我从一开始就从葫芦中发现的一个问题是该应用程序似乎重复了app_life_cycle_hooks.rb文件中的调用。每当我的测试运行时,都会生成一个测试服务器并启动应用程序,然后生成另一个测试服务器并且它们会重新启动应用程序。失败时,会截取两张屏幕截图,而不是一张。在“-v”模式下运行测试会显示这些调用两次(下面用星号表示):

您将在下面找到我当前正在使用的app_life_cycle_hooks文件,不可能重复调用或诸如此类,它是通过calabash-android gen创建的。我为屏幕添加了一个助手,它将在测试开始时将 android 设备旋转到正确的方向,而不是它当前的任何方向,但这不应该影响生成多个服务器,因为代码可以被撕掉并且结果相同仍然显示。引擎盖下的某些东西似乎正在多次访问我的 *apps_life_cycle_hooks** 文件。

**编辑:也添加屏幕文件

编辑 2我正在粘贴一个功能的完整日志,其中测试服务器无缘无故地启动了两次

0 投票
1 回答
592 浏览

ruby - 使用红宝石黄瓜和葫芦时出错?

/usr/bin/ruby -EUTF-8 -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /usr/bin/cucumber /Users/aalra01/RubymineProjects/wendys-android /Wendys/features/menu/menu.feature --format Teamcity::Cucumber::Formatter --expand --name "^菜单项分为各自的类别$" --color -r features 测试从 10 开始:上午 15 点...鉴于我在菜单上 # features/step_definitions/menu/menu.rb:18 当我选择类别 # features/step_definitions/menu/menu.rb:24 然后我被带到 # features/ 部分step_definitions/menu/menu.rb:34 2102 KB/s(560131 字节在 0.260 秒内)2167 KB/秒(9053374 字节在 4.079 秒内)java.lang.SecurityException:权限拒绝:启动检测 ComponentInfo{com.wendys.wendys. test/sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 从 pid=2814,uid=2814 不允许,因为包 com.wendys.wendys.test 在 android.os.Parcel.readException(Parcel.java:1540) 在 android.os.Parcel.readException 没有与目标 com.wendys.wendys 匹配的签名(Parcel.java:1493) 在 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am。 Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com .android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object /element_definers.rb:4:in测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inos.Parcel.readException(Parcel.java:1493) at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) at com.android.commands.am.Am.runInstrument(Am.java:950) at com.android .commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java :99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./功能/支持/screen_object/element_definers.rb:4:inos.Parcel.readException(Parcel.java:1493) at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) at com.android.commands.am.Am.runInstrument(Am.java:950) at com.android .commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java :99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./功能/支持/screen_object/element_definers.rb:4:inandroid.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inandroid.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2831, uid=2831 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2848, uid=2848 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2865, uid=2865 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2881,uid=2881 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2899, uid=2899 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2916, uid=2916 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2933, uid=2933 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:inreadException(Parcel.java:1493) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am 的 android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) .Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/ screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:in在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.com.android.commands.am.Am.main(Am.java:99) 运行(BaseCommand.java:47)。 os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: ./features/support/screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮'./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上的“跳过步骤跳过步骤无法在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:648) 处截取屏幕截图 com.android.ddmlib.TimeoutException 在 com.android.ddmlib.AdbHelper.read(AdbHelper .java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper.getFrameBuffer(Unknown Source) 在 com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source)在 sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) java.lang.SecurityException: Permission Denial: 开始检测 ComponentInfo{com.wendys.wendys.test/sh .calaba.instrumentationbackend.CalabashInstrumentationTestRunner} 来自 pid=2983, uid=2983 不允许,因为包 com.wendys.wendys。测试在 android.os.Parcel.readException(Parcel.java:1493) 在 android.app.ActivityManagerProxy 的 android.os.Parcel.readException(Parcel.java:1540) 没有与目标 com.wendys.wendys 匹配的签名.startInstrumentation(ActivityManagerNative.java:3609) 在 com.android.commands.am.Am.runInstrument(Am.java:950) 在 com.android.commands.am.Am.onRun(Am.java:316) 在 com。 android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method ) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: 对等方重置连接./features/support/screen_object/element_definers.rb:4:inos.Parcel.readException(Parcel.java:1493) at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) at com.android.commands.am.Am.runInstrument(Am.java:950) at com.android .commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java :99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: 连接重置由同行./features/support/screen_object/element_definers.rb:4:inos.Parcel.readException(Parcel.java:1493) at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:3609) at com.android.commands.am.Am.runInstrument(Am.java:950) at com.android .commands.am.Am.onRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java :99) 在 com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) 在 com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: 连接重置由同行./features/support/screen_object/element_definers.rb:4:inonRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android .internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: Connection reset by peer ./features/support /screen_object/element_definers.rb:4:inonRun(Am.java:316) 在 com.android.internal.os.BaseCommand.run(BaseCommand.java:47) 在 com.android.commands.am.Am.main(Am.java:99) 在 com.android .internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249) HTTPClient::KeepAliveDisconnected: HTTPClient::KeepAliveDisconnected: Connection reset by peer ./features/support /screen_object/element_definers.rb:4:inblock in element' ./features/support/screen_object/element_definers.rb:35:in阻止按钮' ./features/step_definitions/menu/menu.rb:21:in/^I am on the menu$/' ./features/menu/menu.feature:10:in鉴于我在菜单上' Skipped step Skipped stepCould not take screenshot com.android.ddmlib.TimeoutException at com.android.ddmlib.AdbHelper.read (AdbHelper.java:648) 在 com.android.ddmlib.AdbHelper.read(AdbHelper.java:616) 在 com.android.ddmlib.AdbHelper.getFrameBuffer(AdbHelper.java:296) 在 com.android.ddmlib.CalabashAdbHelper。 getFrameBuffer(Unknown Source) at com.android.ddmlib.CalabashDevice.getScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.takeScreenshot(Unknown Source) at sh.calaba.screenshot.ScreenshotTaker.main(Unknown Source) 9 个场景 ( 9 次失败)27 步(9 次失败,18 次跳过)3m33.125s 进程以退出代码 1 结束

0 投票
1 回答
973 浏览

calabash - 如何覆盖 Calabash 预定义步骤?

我正在定义自定义葫芦步骤(用于 iOS 和 Android),并希望有选择地覆盖各种预定义步骤。一个例子是:

而不是使用这个实现,我想提供我自己的。如果我定义并使用带有匹配正则表达式的步骤,则会出现错误:

它还建议使用“--guess”,但这没有帮助,我仍然得到Cucumber::Ambiguous错误。我可以对我的步骤的正则表达式进行一些任意更改,例如:

但这感觉像是一个糟糕的解决方案,原因有几个

  • 必须防止使用内置步骤,尤其是因为它可能是最自然的措辞
  • 如果 canned_steps 在未来的修订中添加了一个冲突的步骤,我将被迫改变我的措辞和我的所有场景
    • Android 和 iOS 预定义步骤之间的措辞似乎也有些不同。如果我无法覆盖,这意味着我需要避免在 Android 上使用 iOS 预定义步骤,即使我不会在 Android 上收到Cucumber::Ambiguous错误。
  • 一般来说,我不想告诉场景作者(通常是 QA)不要使用特定的措辞,我宁愿添加替代措辞而不是删除选项

有没有办法取消定义内置步骤?android canned_step 文档建议应该有:You can add your own steps or change the ones you see here

我也不想立即丢失所有预定义的步骤(例如:不需要 calabash_steps.rb)。我宁愿只在它们成为问题时才逐步淘汰它们。如果可以的话,我不想直接编辑葫芦代码,因为这需要滚动我自己的葫芦发行版而不是使用 gem 来安装它。

0 投票
3 回答
2968 浏览

ruby - 无法加载此类文件 -- 2.2/gherkin_lexer_en,如何解决?

我需要一点帮助。我该如何解决这个问题?

当我打电话时,cucumber我收到以下错误:

系统:

  • 视窗 8.1 x64
  • Ruby 2.2.1 安装程序

我得到了答案: https ://github.com/cucumber/cucumber/issues/830#issuecomment-90837546

恐怕 Windows/Ruby 上的 Cucumber 需要 ruby​​ 2.0.0 (x86)。原因是 gherkin gem 还没有为更新的版本或 Ruby 提供编译的二进制文件,而不是为 x64 提供的。

我们正在开发 Gherkin3 来解决这个问题。有关背景,请参阅此帖子。我不能给你一个预计到达时间,但至少还有几个月的时间。

0 投票
3 回答
408 浏览

xamarin - Calabash 错误 - 类 AuthenticationPage 的超类不匹配

我是 Ruby/Calabash 的新手,并设法为 ios 设置了一个专用的 Calabash 自动化框架,该框架具有页面对象模型模式并成功运行。

我也想为 android 扩展相同的框架。我在 features 文件夹中为 ios 和 android 创建了一个专用文件夹,并考虑将它们各自的页面对象放在这些文件夹中。

但是当我运行 calabash-android 时,calabash 发现 ios 文件夹中存在类似的页面类并开始抛出错误消息。我想为 ios 和 android 页面遵循相同的命名约定,而不会出现这种名称冲突。可能吗?

0 投票
1 回答
507 浏览

android - Calabash Android 如何从 TextViews 获取数据并进行比较

我有三个 Textview,我想比较两个 Textview 的数据与第三个的差异。我正在使用下面的代码,但它对我不起作用。请帮我解决这个问题。

0 投票
1 回答
67 浏览

xamarin - Calabash 没有在 Android 模拟器中启动应用程序

我在我的 Mac 中使用以下版本的葫芦。calabash-android (0.5.5) calabash-common (0.0.1) calabash-cucumber (0.13.0) 现在更新了

此外,我已在我的 .bash_profile 中正确地将 ANDROID_HOME 设置为平台工具/appt 和 JAVA_HOME 和 PATH 变量

从命令行,我打开模拟器并传递设备 ID (192. *. .***:5555) 和随机端口号 34801。

我在终端中没有收到任何错误消息。但是在测试运行开始时,calabash 会向模拟器发送一个唤醒命令(我认为),然后启动 iOS 模拟器来执行执行。

请提供有关如何解决此问题的任何指示?

0 投票
1 回答
125 浏览

ruby - 在移动测试期间重写响应的代理

我正在测试一个移动应用程序。在某些情况下,我想更改来自与应用程序对话的服务器的响应。

我有一部手机 (Android) 连接到运行 Cucumber 测试的计算机。我想代理进入手机的响应并对其进行一些更改,以便我可以测试更多场景。

有什么好主意吗?

[电话] --> "给我你的信息" --> [服务器]

[服务器] --> “这里是信息” ---> [ruby 代理] ---> “这里是改变的信息” ---> [电话]

0 投票
1 回答
54 浏览

calabash - 是否可以直接查询并返回每个对象 2 个字段?

比如在应用中查询一个屏幕,我可以只返回一个对象的文本和center_y坐标吗?

到目前为止,我已经通过使用查询获得了文本:

但是我可以只获得结果哈希中返回的 text 和 center_y 字段(而不自己编辑哈希)吗?

0 投票
0 回答
93 浏览

android - 运行 Calabash 测试时不加载 GridView

我正在尝试使用 Calabash 在我的 Android 应用程序上运行测试。我的应用程序的主屏幕有一些按钮和一个网格视图。网格视图的每个单元格都包含一个 ImageView。如果我通过 Calabash 控制台启动应用程序,一切看起来都很棒。所有图像都加载到网格中,我可以手动执行我的测试步骤。

但是,当我尝试运行包含这些相同步骤的测试时,我的网格视图在启动时没有填充,因此我不能在图像上使用“触摸”命令。

为什么我会从运行测试中得到不同的行为?

编辑:这是我正在使用的命令。

要运行测试:

(SDK PATH) calabash-android 运行 (APK PATH) features/PTA-3.feature

要启动控制台:

(SDK PATH) 葫芦-android 控制台 (APK PATH)

start_test_server_in_background