【问题标题】:Testing Dynamically generated UI elements using XCode Automation tool使用 XCode 自动化工具测试动态生成的 UI 元素
【发布时间】:2012-12-13 08:29:36
【问题描述】:

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

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

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

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

var target = UIATarget.localTarget();

var app = target.frontMostApp();

var window = app.mainWindow();

target.logElementTree();

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

我们将不胜感激。

【问题讨论】:

    标签: ios xcode ui-automation automated-tests ui-testing


    【解决方案1】:

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

    我们可以使用 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();

    希望这对某人有所帮助

    【讨论】:

    • 有没有办法在自动化过程中检索屏幕中可用的所有控件。更具体地说,我想将 logElementTree 的内容存储到某个变量上怎么做??
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2010-11-25
    相关资源
    最近更新 更多