MonkeyTalk是否支持基于PhoneGap Sencha Touch的移动Hibrid应用程序?

时间:2013-04-03 08:42:30

标签: cordova sencha-touch-2 monkeytalk hybrid-mobile-app

我们有一个基于PhoneGap Sencha Touch的移动混合应用程序,我想在自动化测试中使用MonkeyTalk。 有人能帮我吗?提前谢谢。

我安装了monkeytalk-1.0.40,效果很好。有了它,我可以很好地测试本机应用程序。

我用PhoneGap构建了一个混合应用程序,它很简单,只有一个代码是加载Sencha Touch示例页面:     super.loadUrl( “http://dev.sencha.com/deploy/touch/examples/production/index.html”);

我也按照MonkeyTalk的用户指南(www.gorillalogic.com/monkeytalk-documentation/monkeytalk-getting-started/install-agent/android)执行了所有操作。

然后,一切准备就绪,将简单的混合应用程序部署到设备模拟器。 MonkeyTalk IDE也可以连接到应用程序。 我记录了一些动作(点击一个字段并在其中键入一些字符),但只记录了一些“WebView * tap”动作(没有点击位置信息)。当我重播它时,它也可以重放一些点击动作,但是没有位置,点击位置是不正确的。

所以,我必须手动编写一些动作。我发现有时候“标签点击”动作可以起作用,但有时它会点击一个不正确的元素。 当我进入表单页面(Kitchen Sink - >用户界面 - > Forms on dev.sencha.com/deploy/touch/examples/production/index.html)时,我播放了一个动作来点击一个字段,整个UI移动到屏幕的左下角,非常奇怪。 并且,我试图将一些文本发送到“名称”字段,没有任何反复发生。

你知道这是什么问题吗?有可能解决?我该怎么办?

非常感谢你!

2 个答案:

答案 0 :(得分:0)

我使用MonkeyTalk和Sencha已有一段时间了。据我所知,MonkeyTalk为当前视图中的每个(Web-)元素创建了自己的ID(MonkeyID)。一旦元素获得它的MonkeyID,它将保留它用于剩余的测试。 问题是,Sencha首先没有为它的WebElements创建唯一的ID。这有点令人困惑,因为它只是不合逻辑。

无论如何,Sencha所做的是生成ID通用,因此它们在当前视图中只是唯一的。当您切换到另一个视图并稍后返回时,所有元素可能具有不同的ID。也许你可以在Sencha设置中改变它......

这就是为什么MonkeyTalk无法为这些元素创建MonkeyID,而MonkeyID只是Monkeytalks与元素交互的方式,你根本无法点击它们,向它们发送文本或以任何其他方式与它们交互。 到目前为止,我发现的自动化Sencha应用程序的唯一解决方案是使用XPath并引用Element的标签。但不幸的是,MonkeyTalk并不支持......

答案 1 :(得分:0)

使用Sencha构建的应用程序并不是最容易测试的,因为Steve McGarret所说,但是MonkeyTalk使用其documention web page:

中解释的替代方法完成工作
  

MonkeyId也可以指定为基于1(非基于零)的索引   形式#N。在这种情况下,MonkeyId标识第N个   当前显示的指定类型的组件。组件   根据最左上方的位置索引,即通过排序   组件(x,y)坐标。

想象一下,您希望自动注册用户。该页面很可能包含多个输入字段,但您无法使用其ID,因为如果您导航到另一个视图,它们将会更改。这是你可以做的:

  • 打开chrome并使用其Web检查器(chrome:// inspect /#devices)查找所需的元素。让我们假设一个输入框,其属性为“name”,值为“firstName”。
  • 转到MonkeyTalk并打开组件树。按“输入”一词过滤。
  • 记下它在树中的位置(例如3)并开始编写脚本:
    • 输入#3 EnterText John
    • 输入#4 EnterText Doe
    • (...)

就是这样。 MonkeyTalk将完美播放您的脚本。 如果其他人有更好的解决方案来获取组件树中元素的位置,请告诉我 - 否则,如果您的页面有很多div /元素并且不值得麻烦,那将是一个非常痛苦的过程。不妨使用另一个测试框架。