1

我想测试我的 iOS 应用程序。它包含动态生成的 UI 元素。我在不使用界面构建器的情况下以编程方式创建所有 UI 元素。要测试我需要通过自动化工具访问它们。

我至少不能用 logElementTree() 打印它们,而且我不知道如何访问动态生成的元素。

如果有什么方法可以使用脚本访问动态生成的元素?

这是我尝试记录 UI 元素的代码。

var target = UIATarget.localTarget();

var app = target.frontMostApp();

var window = app.mainWindow();

目标.logElementTree();

我进一步尝试使用 app.mainWindow().logElementTree(); 它也不起作用。

任何帮助将不胜感激。

4

1 回答 1

0

这是答案。我自己做的。这就是过程。

我们可以使用 delay(int) 方法来暂停测试脚本,因为脚本仍然有效。否则脚本将在动态 UI 绘制之前结束。

现在 logElementTree() 方法起作用了,我们可以访问 UI 元素。

这就是我们访问动态生成的 UI 元素的方式。在我的应用程序中,首先有一个连接按钮,当单击它时,会出现一个带有文本框的 UI,并且会动态绘制一个登录按钮。

这是访问 UI 元素的脚本。

var target = UIATarget.localTarget(); var app = target.frontMostApp(); app.logElementTree();

//-- 选择元素 UIALogger.logMessage( "点击连接按钮" ); var window = UIATarget.localTarget().frontMostApp().mainWindow().buttons() [0].tap();

UIALogger.logMessage("等待下一个用户界面"); 目标.延迟(2);target.frontMostApp().logElementTree(); UIALogger.logMessage("输入用户名");

UIALogger.logMessage("等待下一个用户界面"); 目标.延迟(3);target.frontMostApp().logElementTree(); target.frontMostApp().mainWindow().scrollViews()[0].textFields()[0].setValue("admin"); UIALogger.logMessage("关闭键盘"); var name = UIATarget.localTarget().frontMostApp().keyboard().buttons()["done"].tap();

希望这对某人有帮助

于 2013-01-04T05:32:27.457 回答