iOS UIAutomation UIAActivityIndi​​cator

时间:2011-07-19 23:49:00

标签: iphone ios testing ios-ui-automation

我的根表视图中有一个活动指示器,当事情被加载。我正在尝试测试指标的存在,但似乎无法获得UIAActivityIndi​​cator的支持,也无法在app元素树层次结构中的任何位置找到它。该指标是根表视图的子视图,所以我希望它被视为该元素树的一部分,但我没有在任何地方看到它(除了在屏幕上的物理上)。

从javascript获取活动指标需要的其他魔法吗?

3 个答案:

答案 0 :(得分:2)

这是我为在iOS中等待页面加载而构建的函数。您可以在函数代码执行之前传递可选的preDelay,而不是等待activityIndi​​cator对象变为null 30秒(每半秒尝试一次,60次)。当我点击对象时,我已经扩展了UIAutomation工具以包含此命令。

this.wait_for_page_load = function(preDelay) {        
    if (!preDelay) {
        target.delay(0);
    }
    else {
        target.delay(preDelay);
    }

    var done = false;
    var counter = 0;      
    while ((!done) && (counter < 60)) {
        var progressIndicator = UIATarget.localTarget().frontMostApp().windows()[0].activityIndicators()[0];
        if (progressIndicator != "[object UIAElementNil]") {
            target.delay(0.5);
            counter++;  
        }
        else {
            done = true;           
        }
    }
    target.delay(0.5);
}

答案 1 :(得分:2)

target.delay(1);

target.pushTimeout(10);

target.frontMostApp().mainWindow().activityIndicators()["In progress"].waitForInvalid() == true;

target.popTimeout();

这将等待1秒钟,以显示活动指示器。然后,它将等待它变为无效,超时值为10秒。将“进行中”替换为指标名称。

答案 2 :(得分:0)

以下代码解决了我的问题

while(target.frontMostApp().mainWindow().activityIndicators()["In progress"].isEnabled());

等待活动指示器变为禁用状态(但在从我们的视图中删除指示符后,需要再花1-2秒才能禁用)