Попытки прикоснуться к кнопке UIB в UITableViewCell с помощью автоматизации пользовательского интерфейса завершаются неудачно с «невозможно нажать» - PullRequest
17 голосов
/ 19 января 2012

У меня есть приложение для iPhone, которое я тестирую с помощью UI Automation.

У меня есть кнопка в UITableViewCell, но когда я пытаюсь нажать на нее с помощью UI Automation, я получаю следующую ошибку.

Script threw an uncaught JavaScript error: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').elements()["detailsButton"] could not be tapped

Я включил доступность для кнопки в Интерфейсном Разработчике и назначил метку доступности (и идентификатор) «detailsButton».Я могу получить элемент кнопки и проверил, что он действителен.Я просто не могу нажать по какой-то причине.

UIATableCell Brooklyn

UIButton - это круглая прямоугольная кнопка с включенным взаимодействием с пользователем.Спасибо за любой отзыв.

Ответы [ 7 ]

1 голос
/ 01 ноября 2012

Попробуйте сначала подтвердить, если кнопка существует, используйте tuneup_js для простых утверждений.Затем подтвердите, включена ли кнопка.

Вы пробовали: target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].**cells()**.firstWithPredicate("name contains[c] 'Brooklyn'").elements()["detailsButton"]?

Также опубликуйте другое изображение, на котором показан UIATableCell, развернутый там, где есть кнопка details.

1 голос
/ 28 мая 2012

Вы можете выделить UIButton, кроме использования круглой прямоугольной кнопки.А также вы можете установить целевое действие кнопки в вашем классе контроллера, где представлены методы делегата табличного представления.

0 голосов
/ 26 февраля 2014

Вы можете отправить событие касания по всему окну:

function tap_from_window(elem) {
    var mainWindow = target.frontMostApp().mainWindow();
    var elemRect = elem.rect();
    var windowRect = mainWindow.rect();

    var xPos = (20 + elemRect.origin.x) / windowRect.size.width;
    var yPos  = (50 + elemRect.origin.y) / windowRect.size.height;

    mainWindow.tapWithOptions({tapOffset:{x:xPos, y:yPos}});    
}

var target = UIATarget.localTarget();
var window = target.frontMostApp().mainWindow();
var tableView = window.scrollViews()[0].elements()[element_name].tableViews()[0];
tap_from_window(tableView.elements().firstWithPredicate(name contains[c] 'Brooklyn'))

Как и многие другие вещи, связанные с iOS, я понятия не имею, почему нельзя напрямую коснуться элемента.Я адаптировал вышеуказанную функцию из кода в этом посте: ошибка scrollToVisible при тестировании на устройстве, UIAutomation

0 голосов
/ 26 июня 2013

Я столкнулся с той же проблемой.После того, как я добавил задержку, она работает.

UIATarget.localTarget().delay(1);
0 голосов
/ 29 октября 2012

Я не знаю, почему вы используете UI Automation. Но столько, сколько я знаю о добавлении UIButton в tableviewcell-

1) просто добавьте UIButton в UITableViewCell.
2) установить значение тега UIButton's и добавить цель к этой кнопке.
3) В методе целевой кнопки вы можете получить объект UIButton и делать там свои вещи ..

Надеюсь, это поможет вам.

0 голосов
/ 20 октября 2012
but=[UIButton buttonWithType:UIButtonTypeCustom];

Вы должны использовать пользовательский тип кнопки.

0 голосов
/ 01 июня 2012

Вы должны использовать ButtonType=Custom

...