1

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

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

我用PhoneGap构建了一个Hybrid Application,非常简单,只有1个代码是加载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) 做了所有事情。

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

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

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

非常非常感谢你!

4

2 回答 2

0

由于 Steve McGarret 所说,使用 Sencha 构建的应用程序并不是最容易测试的,但 MonkeyTalk 使用其文档网页中解释的替代方法完成了工作:

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

假设您想要自动注册用户。该页面很可能包含多个输入字段,但您不能使用它们的 ID,因为如果您导航到另一个视图,它们会发生变化。以下是您可以执行的操作:

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

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

于 2015-02-22T17:28:38.423 回答
0

我使用 MonkeyTalk 和 Sencha 已经有一段时间了。据我了解,MonkeyTalk 为当前视图上的每个(Web-)元素创建了自己的 ID(MonkeyID)。一旦一个元素获得了它的 MonkeyID,它将在接下来的测试中保留它。问题是,Sencha 并没有为它的 WebElements 创建唯一的 ID。这有点令人困惑,因为它根本不合逻辑。

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

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

于 2014-07-21T10:06:36.147 回答