Как проверить свойства элемента в iOS GUI автоматизации?

Все примеры автоматизации пользовательского интерфейса, которые я видел, используют стандартные компоненты, состояние которых можно проверить с помощью JavaScript API, используя value() метод. Это немного ограничивает. Допустим, вы хотите проверить цвет или альфа-значение и еще много чего.

Как я могу проверить свойства представления?

Пример: нажатие на определенный элемент должно сделать его "выбранным". Я хотел бы нажать на него, а затем убедиться, что isSelected является TRUE.

Обновить:

Я нашел метод withPredicate(), который должен делать это теоретически, за исключением того, что он, кажется, срабатывает только на name свойства:

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

1 ответ

Решение

Я закончил с этим подходом, который работает для моих целей:

Пусть UIView.accessibilityValue возвращает строку JSON с соответствующими свойствами:

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

Затем используйте eval() в тестовом коде и проверьте эти свойства. Значение () является сокращением для вызова 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");
}
Другие вопросы по тегам