Подтвердить что ты не робот

Попытки использовать UIButton в UITableViewCell с использованием автоматизации пользовательского интерфейса завершаются неудачей с "не могут быть задействованы",

У меня есть приложение для iPhone, которое я тестирую с помощью автоматизации пользовательского интерфейса.

У меня есть кнопка в 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

Я включил доступность на кнопке в Interface Builder и назначил метку доступности (и идентификатор) "detailsButton". Я могу получить элемент кнопки и проверить, что он действителен. Я просто не могу нажать на нее по какой-то причине.

UIATableCell Brooklyn

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

but=[UIButton buttonWithType:UIButtonTypeCustom];

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

Ответ 5

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

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

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

Ответ 6

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

UIATarget.localTarget().delay(1);

Ответ 7

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

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

Ответ 8

Вы пробовали это?

target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').buttons()["detailsButton"].tap()