javascript - iOS UIAutomation UIAElement.isVisible() 抛出陈旧的响应?

标签 javascript iphone ios ipad ios-ui-automation

我正在尝试在循环中使用 isVisible() 来为我的 iOS UIAutomation 创建一个 waitForElement 类型的函数。当我尝试使用以下代码时,在弹出新屏幕时等待元素时失败。该元素显然在那里,因为如果我在点击该元素之前执行延迟(2),它就可以正常工作。其他人是如何做到这一点的,因为我不知所措......

这是我正在使用的 waitForElement 代码:

function waitForElement(element, timeout, step) {
        if (step == null) {
                step = 0.5;
        }

        if (timeout == null) {
            timeout = 10;
        }

        var stop = timeout/step;

        for (var i = 0; i < stop; i++) {
                if (element.isVisible()) {
                        return;
                }
                target.delay(step);
        }
        element.logElement();
        throw("Not visible");
}

最佳答案

您正在将“元素”对象传递给此函数。当函数启动时,您的“元素”对象具有 isVisible 属性 false 或者当您传递的屏幕上没有这样的对象时 [object UIAElement Nil]。任何时候尝试获取此类对象的属性 isVisible 都将始终返回 false

如果你想让这个函数起作用,你需要将“元素”作为一个对象传递给你的函数。 所以不是

if (element.isVisible())

您需要先获取元素对象并尝试获取 isVisible() 属性。

if (target.manWindow().elements()[0].isVisible())

此更改后,将不再需要传递“元素”对象,因为此函数将仅适用于一个元素。

要使此函数适用于任何元素,您需要传递的不是“元素”对象,而是返回要检查的“元素”对象的函数。 这是一个例子:

var target = ...;
var mainWindow = ...;

//function that returns firstObject
var firstElement = function()
{
return mainWindow.elements()[0];
}
//function that returns secondObject
var secondElement = function()
{
return mainWindow.elements()[1];
}

//这是您需要在“等待”功能中更改的内容。改变

if (element.isVisible())

if (element().isVisible())

函数调用示例:

waitForElement(firstElement, 10, 1);
waitForElement(secondElement, 10, 1);

注意:如果您使用 firstElement() 调用您的 waitForElement 函数 - 函数将失败并出现相同的错误。这会使您的测试更加复杂,但它确实有效。

关于javascript - iOS UIAutomation UIAElement.isVisible() 抛出陈旧的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7044554/

相关文章:

javascript - 在 javascript 中使用属性函数?

javascript - 在 Angular 应用程序外部分配范围对象

iphone - Default.png 显示在模拟器中但不显示在真实设备 iphone 上?

ios - iPhone 配置实用程序无法找到 'Apple Mobile Device Support'

iphone - 使用 MKMapView 在 iphone 的 map 应用程序中显示路况

javascript - 按 Angular 加权平均值排序

javascript - 光谱颜色选择器未在平面模式下设置颜色和 alpha 值

iPhone UIView touchesMoved : withEvent: does not get called on UIView with gesture recognizers

iphone - objective-c 中iPhone的ftp客户端库

ios - 使用 Core Data 从 NSMutableArray 创建对象的 NSString