Нажатие кнопки iPhone UIAutomation не срабатывает - PullRequest
1 голос
/ 15 сентября 2010

Я пытаюсь использовать UIAutomation в инструментах с iPhone Simulator и последней версией iOS SDK 4.1.Вот фрагмент кода javascript, с которым возникла проблема:

// there are sufficient delays here to make sure the view is loaded
UIATarget.localTarget().frontMostApp().logElementTree();
main.buttons()["theButton"].tap();
UIALogger.logMessage("The button tapped");
for (var b = 0; b < main.buttons().length; b++)
{
    UIALogger.logMessage("Button title: " + main.buttons()[b].name());
}
main.toolbar().buttons()["OK"].tap();
UIALogger.logMessage("OK tapped");

Имя кнопки «theButton» отображается в logElementTree, а также отображается, когда я регистрирую имена всех кнопок, поэтомуон правильно настроен в Интерфейсном Разработчике, но по какой-то причине он не используется.У меня есть другие кнопки ранее в скрипте, которые нажимаются просто отлично, и если я отменяю скрипт в точке не нажатой кнопки, я могу нажать на кнопку в симуляторе, и она работает как положено.

РЕДАКТИРОВАТЬ: в javascript для цикла, показанного выше, я сделал так, чтобы он касался каждой из кнопок в массиве main.buttons (), и только 1 из 12 идентичных кнопок в представлении получает нажатие.Кроме того, если вам интересно, у меня есть этот код в верхней части файла javascript:

var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();

А вот строка, которая показывает информацию о кнопке из последовательности записей, которые logElementTree помещает в журналсообщения:

4) UIAButton [name:theButton value:(null) NSRect: {{25, 93}, {74, 74}}]

1 Ответ

1 голос
/ 18 февраля 2011

У меня была похожая проблема с нажатием кнопки на листе действий. Я выполняю сценарии на реальном устройстве. Мой код:

//check that action sheet is on the screen
    app.actionSheetIsValid();

//check that the button is on the actionSheet
    actionSheet.actionSheetButton("Exit");

//touch Exit button
    actionSheet.tapActionSheetButtonByName("Exit");

Все функции выполняются и проходят, однако кнопка не нажата. logElementTree(); показывает, что кнопка есть.

Я попытался добавить target.pushTimeout(5); после того, как проверил, находится ли кнопка на листе действий, чтобы дать ей время для обнаружения и нажатия кнопки. Это не помогло.

Затем я добавил: target.delay(1); сразу после того, как я проверил, находится ли кнопка на листе действий и перед ее нажатием. В моем случае это помогло, скрипт стал более надежным и стабильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...