3

在加载内容时,我的根表视图上有一个活动指示器。我正在尝试测试指标是否存在,但似乎无法获得 UIAActivityIndi​​cator,也无法在应用程序元素树层次结构中的任何位置找到它。该指示器是根表视图的子视图,因此我希望它被视为该元素树的一部分,但我在任何地方都看不到它(除了在屏幕上物理上)。

从 javascript 中获取活动指示器需要任何其他魔法吗?

埃德

4

3 回答 3

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);
}
于 2011-08-01T19:19:02.890 回答
2
target.delay(1);

target.pushTimeout(10);

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

target.popTimeout();

这将等待 1 秒钟以使活动指示器出现。然后,它将等待它失效,超时值为 10 秒。用“进行中”替换您的指标名称。

于 2013-09-20T18:11:46.657 回答
0

下面的代码行解决了我的问题

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

它等到活动指示器变为禁用(但从我们的视图中移除指示器后,它需要 1-2 秒才能变为禁用)

于 2016-07-26T12:24:07.747 回答