2013-04-03 59 views
1

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

我安装了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 - > User Interface - > Forms on dev.sencha.com/deploy/touch/examples/production/index.html)时,我玩了一个动作来挖掘一个领域,整个UI移动到屏幕的左侧,非常奇怪。 而且,我试图发送一些文本到“名称”字段,什么都没有发生。

你知道这是什么问题吗?可以修复吗?我应该怎么做?

非常感谢你!

+0

你能帮忙吗?非常感谢! 〜帮忙〜 – user2239510

回答

0

我用MonkeyTalk和Sencha相当长一段时间了。据我所知,MonkeyTalk为当前视图上的每个(Web)元素创建自己的ID(MonkeyIDs)。一旦一个元素得到了它的MonkeyID,它会保留它的剩下的测试。 问题是,Sencha并没有为它的WebElements首先创建唯一的ID。这种混淆因为它根本不合逻辑。

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

这就是为什么MonkeyTalk无法为这些元素创建MonkeyIDs,而MonkeyIDs是Monkeytalks唯一的方式来与元素进行交互,你根本无法点击它们,发送文本到他们或以任何其他方式与他们互动。 迄今为止发现的Sencha应用程序自动化的唯一解决方案是使用XPath并引用Element的标签。但unfortunaly MonkeyTalk不支持......使用Sencha是不是最简单的原因是什么史蒂夫McGarret说测试

0

应用内置,但MonkeyTalk得到使用替代方法来完成这项工作在其documention web page:

解释

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

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

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

就是这样。 MonkeyTalk将完美地演奏你的剧本。 如果其他人有更好的解决方案来获取组件树中元素的位置,请让我知道 - 否则,如果您的页面有很多div /元素并且不值得冒险,那么这是一个非常痛苦的过程。不妨使用另一个测试框架。

相关问题