How to check element properties in iOS gui automation?

情到浓时终转凉″ 提交于 2019-12-03 19:38:18

问题


All UI Automation examples I've seen uses standard components whose state can be inspected with the JavaScript API using the value() method. This is a bit limiting. Lets say you want to check the color or alpha value and whatnot.

How can I inspect the properties of a view?

An example: a tap on a certain element should make it "selected". I'd like to perform a tap on it and then verify that isSelected is TRUE.

Update:

I found the withPredicate() method which should do it in theory, except it seems to only trigger on name properties:

element.withPredicate("isSelected == YES")          // always fails
element.withPredicate("name matches 'my element'")  // works

回答1:


I ended up with this approach which works for my purposes:

Let UIView.accessibilityValue return a JSON string with relevant properties:

- (NSString *)accessibilityValue
{
    return [NSString stringWithFormat:
            @"{'alpha':%f, 'isSelected':%@}", 
            self.alpha, self.isSelected ? @"true" : @"false"];
}

Then use eval() in the test code and check those properties. value() is shorthand for calling accessibilityValue:

var props = eval("(" + element.value() + ")");

if (props.isSelected) {
    UIALogger.logFail("Should not be selected");
}

UIATarget.localTarget().tap({"x":471, "y":337});

var props = eval("(" + element.value() + ")");

if (!props.isSelected) {
    UIALogger.logFail("Should be selected");
}


来源:https://stackoverflow.com/questions/6504358/how-to-check-element-properties-in-ios-gui-automation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!