У меня очень простое приложение, которое включает TableViewController, в котором отображается таблица с несколькими пользовательскими ячейками с изображением, ярлыком и кнопкой, а когда вы нажимаете кнопку, появляется ActionSheet. Итак, в моем пользовательском java-скрипте (с использованием инструментов-UIAutomation) я хочу нажать кнопку в своей таблице (и я могу сделать это без каких-либо проблем), а затем, когда появится ActionSheet, я просто хочу нажать единственную кнопку (кнопка «Отмена») что он показывает.Как получить доступ к ActionSheet (и его кнопкам) в UIAutomation с помощью JavaScript?
И я не знаю, как это сделать должным образом. Так вот мой JS код:
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();
main.tableViews()[0].cells()[1].buttons()["DetailsButton"].tap();
target.delay(5);
main.actionSheet().elements()[0].tap();
И это сообщение я получаю:
Script threw an uncaught JavaScript error: 'undefined' is not a function (evaluating 'main.actionSheet()') on line 9 of New%20Script
Я также попытался actionSheet().buttons()[0].tap();
- не помогло, продолжать получать ту же ошибку.
Я даже попытался получить доступ actionSheet по его accessibleLabel:
main.actionSheet()["CellNumberSheet"].elements()[0].tap();
Если это поможет, то это так, как я показываю свою actionSheet:
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
Иерархия элементов также, как представляется, верный.
Не нашли много полезной информации о нем в Интернете ... так что любая помощь будет оценена ...
Это берет меня немного дальше, хотя до сих пор не работает ... Теперь, когда я пытаюсь нажать на кнопку actionSheet в пути вы предложили, появляется другая ошибка: 'не удается выполнить действие над недопустимым элементом: UIAElementNil from target.frontMostApp(). actionSheet(). elements() [0] '... Также все методы, такие как' checkIsValid() ',' isEnabled() ',' isVisible() 'return False, когда я применяю их к моим actionSheet() и' actionSheet(). name() 'возвращает пустую строку (тогда как на снимке экрана в моем сообщении вы можете см. у него есть действительное имя «CellNumberSheet») ... – arrteme
Это интересно, как насчет использования app.windows() [2].elements() [1] для доступа к таблице действий? – Sugre
Последний способ, которым вы предложили получить доступ к ActionSheet, отлично работает, и все методы, такие как isVisible, checkIsValid и isEnabled, возвращают True. Хотя по-прежнему нельзя использовать кнопки actionSheet! Попробуйте 'app.windows() [2] .elements() [1] .elements() [0] .tap()' и 'app.windows() [2] .elements() [1] .buttons() [0] .TAP() '. Нет успеха, он выдает сообщение об ошибке «Не удается выполнить действие над недопустимым элементом». Временно используя решение для нажатия кнопок asctionSheet, как описано здесь: http://stackoverflow.com/a/5331896/3065769 – arrteme