Эй.
Фактически документация ( это и это ) от Apple - единственное, что я могу найти.
Что касается вашего вопроса, попробуйте
if(UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0].name() === "beep sound")) {
UIALogger.logPass("Buton Present");
} else {
UIALogger.logFail("Buton Not Present");
};
Конечно, это предполагает ( elements () [0] ), что ваша кнопка находится первой в дереве объектов под главным окном.Если это не так, вам может потребоваться вызвать другой элемент (( elements () 3 ), или вам может потребоваться вызвать более глубокую иерархию ( elements () [0]] .elements () 3 ).
Имейте в виду, что приведенный выше код не будет работать, если не будет присутствовать один из объектов в цепочке. Возможно, вам придется проверить каждый объект в цепочкеКроме того, вам может потребоваться проверить, присутствует ли данная кнопка не только на экране, но и видна ли она на экране. В этом случае приведенный выше код может выглядеть следующим образом:
if(UAITarget.localTarget().frontMostApplication().mainWindow() && UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0] && UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0].withPredicate("name matches 'beep sound'")) {
if(UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0].isVisible()) {
UIALogger.logPass("Buton Present");
} else {
UIALogger.logFail("Buton Present, but Not Visible");
}
} else {
UIALogger.logFail("Buton Not Present");
};
Но теперь удобочитаемость, удобство обслуживания иатрибуты кода избыточного размера страдают. Поэтому я бы поменял его на:
function isButtonWithPredicate (predicate) {
if(UAITarget.localTarget().frontMostApplication().mainWindow() && UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0] && UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0].withPredicate(predicate)) {
return true;
} else {
throw new Error("button not found, predicate: " + predicate);
}
function getButtonWithPredicate (predicate) {
try {
if(isButtonWithPredicate(predicate)) {
return UAITarget.localTarget().frontMostApplication().mainWindow().elements()[0].withPredicate(predicate);
}
} catch (error) {
throw new Error("getButtonWithPredicateError: " + error.message);
};
}
var strpredicate = "name matches 'beep sound'";
var objButton = null;
try{
objButton = getButtonWithPredicate(strPredicate);
if(objButton.isVisible) {
UIALogger.logPass("Buton Present");
};
} catch(error) {
UIALogger.logFail(error.message);
}
Конечно, вы все еще можете улучшить его ... но вы должны понять.
btw справочник Apple по предикатам
PS Код был написан в блокноте и не был проверен, поэтому он может содержать некоторые ошибки синтаксического анализа.