我在移动自动化中使用了Appium和Android的Appium.我想知道提供Calabash的优势,以及两个工具的生成脚本是否有共同点?
我已经关注此链接:Appium VS Calabash
我有calabash-android设置与默认场景完美配合(cucumber
用于运行测试或calabash-android console
进入REPL模式).
但是,在某些情况下,能够连接到已经运行的应用程序非常有用.例如,我将在调试模式下启动应用程序并启动测试以便能够设置断点并检查为什么某些功能在我的方案中不能按预期工作.
当谈到iOS上的Calabash时,这个任务非常简单:当应用程序以捆绑的测试服务器启动时,不需要额外的准备工作,我可以随时附加葫芦.但是,每当我尝试启动应用程序运行的calabash时,Calabash Android似乎都会强制退出应用程序.
它有什么办法吗?
编辑 看起来下面的答案没什么用,但我仍然希望有人(葫芦开发者,你在哪里?)会偶然发现这一天.我花了一些时间自己发现问题,具体问题是:
calabash-android console PATH_TO_APK
query("*")
) - 它失败并显示KeepAliveDisconnected消息挖掘更深的细节,我发现实际上运行该start_test_server_in_background shell am instrument
与sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner
被仪器的后端,并描述其应用到仪器一堆其他标志,使用什么端口等.
如上所述,以下内容将有很大帮助:shell am instrument是否可以附加到正在运行的应用程序?
android cucumber calabash android-instrumentation calabash-android
我在尝试运行calabash-android命令时遇到"无法找到Android SDK请确保已安装"错误.我已经通过brew安装了Android SDK.以下是我的.bash_profile的内容:
ANDROID_HOME=/usr/local/Cellar/android-sdk/24.2
PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:/usr/local/apache-ant-1.9.4/bin
PATH=$PATH:/usr/local/share/npm/bin
JAVA_HOME=/usr/libexec/java_home
export PATH
Run Code Online (Sandbox Code Playgroud)
这是我的$ PATH:
echo $PATH
/Users/mchumak/.rvm/gems/ruby-2.1.1/bin:/Users/mchumak/.rvm/gems/ruby-2.1.1@global/bin:/Users/mchumak/.rvm/rubies/ruby-2.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/android-sdk/24.2/tools:/usr/local/Cellar/android-sdk/24.2/platform-tools:/usr/local/Cellar/android-sdk/24.2/build-tools:/Users/mchumak/.rvm/bin:/Users/mchumak/.rvm/bin:/opt/local/bin:/opt/local/sbin:/Users/mchumak/.rvm/bin:/usr/local/apache-ant-1.9.4/bin:/usr/local/share/npm/bin
Run Code Online (Sandbox Code Playgroud)
"哪个android"产生:
/usr/local/bin/android
Run Code Online (Sandbox Code Playgroud)
该特定文件的内容是:
#!/bin/bash
TOOL="/usr/local/Cellar/android-sdk/24.2/tools/android"
exec "$TOOL" "$@"
Run Code Online (Sandbox Code Playgroud)
我可以从命令行运行Android SDK Manager,它显示正确的SDK路径(/usr/local/Cellar/android-sdk/24.2).
我很难过.有什么想法为什么calabash-android找不到SDK?
我想在docker上安装ruby.我可以安装1.9版本,但无法安装最新版本,如2.2.0及更高版本.我实际上是想在docker上设置calabash.试过这个.每当我尝试在其中安装calabash-android时会收到错误
ERROR: Error installing calabash-android:
luffa requires Ruby version >= 2.0.
Run Code Online (Sandbox Code Playgroud) 我的android app项目以编程方式启动系统对话框以安装可信CA证书:
Intent intent = KeyChain.createInstallIntent();
intent.putExtra(KeyChain.EXTRA_PKCS12, certificate);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Run Code Online (Sandbox Code Playgroud)
以上是关于我的Android应用程序项目.现在,关于测试:
我正在使用Calabash为我的项目编写自动验收测试.
我知道Calabash提供了预定义的步骤定义.但这些步骤提供了与app的UI组件交互的关键字(例如输入文本,按下按钮).我无法找到如何使用这些预先定义的步骤来测试是否系统对话框中显示.
我的问题:
Q1.如何使用Calabash预定义的步骤定义来检查系统对话框?如何在对话框中输入文字?
Q2.如果回答Q1是"不可能的",那么,我如何使用Calabash进行测试呢?看起来我需要编写自己的Ruby函数来测试它?如果是这样,如何编写Ruby函数来测试这个系统对话框,以及如何在测试中使用Calabash与系统对话框进行交互?
我有两个不同的Android设备插入同一台机器.我想做的是针对每个设备并分别对其执行测试.
不幸的是,似乎每次都需要拔掉其中一个设备来运行测试,因为如果我不这样做,我会收到以下错误:
error: more than one device and emulator
Run Code Online (Sandbox Code Playgroud)
有没有人知道这个问题的解决办法,以便我可以简单地插入两个设备并运行我的测试?
我是calabash-android测试自动化库的新手.我花了两天时间来理解这个问题没有成功:(
我使用的是calabash-android 版本0.8.0,我按照记录的预定义步骤进行测试.
我的测试很简单,只需等待登录界面(这是一个包含id为" email_field
" 的输入字段的活动,输入用户名和密码.这是我在功能文件中的步骤:
Feature: Login feature
Scenario: As a user I can login
Then I wait for the view with id "email_field" to appear
Then I enter text "john123@gmail.com" into field with id "email_field"
Then I enter text "123456" into field with id "pwd_field"
Run Code Online (Sandbox Code Playgroud)
当我使用命令运行我的测试时calabash-android run myApp.apk
,我的应用程序启动,显示登录屏幕,但过了一段时间,我的应用程序已关闭并且我经常收到以下错误,无论在哪个Android设备上运行(在Android 4.3和Android上测试) 6.0设备):
Feature: Login feature
Scenario: As a user I can login # features/my_first.feature:2
execution expired (HTTPClient::ReceiveTimeoutError)
./features/support/app_life_cycle_hooks.rb:5:in …
Run Code Online (Sandbox Code Playgroud) 我和下面的帖子有完全相同的问题,除了我需要它适用于Android,下面的帖子适用于iOS.我已尝试过该帖子中给出的两种解决方案,但它们似乎不适用于Android.所有帮助表示赞赏!
我尝试了多个命令来从应用程序切换器关闭应用程序,但没有通过它。我什至不知道是否有 ány adb 命令可以持久地从应用程序切换器关闭应用程序。我更多地用谷歌搜索同样的东西,甚至通过Android但没有运气。有没有人知道这个,如何解决?请提出我们宝贵的意见。提前致谢
我正在为android运行calabash测试.到目前为止,一切都很好.但在某些方面,它会引发以下错误
HTTPClient :: KeepAliveDisconnected:通过peer @ io_fillbuf重置连接 - fd:8(HTTPClient :: KeepAliveDisconnected)
还有一件事我错过了指出当整个测试在docker容器上运行时问题就出现了.相同的文件在本地运行,没有任何错误.
我已经搜索了很多,找到了答案,到目前为止找不到一个.所有的帮助都提前感谢.
calabash-android ×10
android ×8
calabash ×8
cucumber ×2
docker ×2
ruby ×2
adb ×1
appium ×1
appium-ios ×1
calabash-ios ×1
device ×1
testing ×1