在加载内容时,我的根表视图上有一个活动指示器。我正在尝试测试指标是否存在,但似乎无法获得 UIAActivityIndicator,也无法在应用程序元素树层次结构中的任何位置找到它。该指示器是根表视图的子视图,因此我希望它被视为该元素树的一部分,但我在任何地方都看不到它(除了在屏幕上物理上)。
从 javascript 中获取活动指示器需要任何其他魔法吗?
埃德
在加载内容时,我的根表视图上有一个活动指示器。我正在尝试测试指标是否存在,但似乎无法获得 UIAActivityIndicator,也无法在应用程序元素树层次结构中的任何位置找到它。该指示器是根表视图的子视图,因此我希望它被视为该元素树的一部分,但我在任何地方都看不到它(除了在屏幕上物理上)。
从 javascript 中获取活动指示器需要任何其他魔法吗?
埃德
这是我为在 iOS 中等待页面加载而构建的函数。您可以在函数的代码执行之前传递一个可选的 preDelay,除了它等待 activityIndicator 对象变为 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);
}
target.delay(1);
target.pushTimeout(10);
target.frontMostApp().mainWindow().activityIndicators()["In progress"].waitForInvalid() == true;
target.popTimeout();
这将等待 1 秒钟以使活动指示器出现。然后,它将等待它失效,超时值为 10 秒。用“进行中”替换您的指标名称。
下面的代码行解决了我的问题
while(target.frontMostApp().mainWindow().activityIndicators()["In progress"].isEnabled());
它等到活动指示器变为禁用(但从我们的视图中移除指示器后,它需要 1-2 秒才能变为禁用)