Ответ 1
Вы можете выделить UIButton
, кроме кнопки round rect. А также вы можете установить целевое действие кнопки в классе контроллера, где представлены методы делегирования представления таблиц.
У меня есть приложение для 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". Я могу получить элемент кнопки и проверить, что он действителен. Я просто не могу нажать на нее по какой-то причине.
UIButton представляет собой круглую прямоугольную кнопку с включенным взаимодействием с пользователем. Спасибо за любую обратную связь.
Вы можете выделить UIButton
, кроме кнопки round rect. А также вы можете установить целевое действие кнопки в классе контроллера, где представлены методы делегирования представления таблиц.
Попробуйте сначала утвердить, если кнопка существует, используйте tuneup_js для простых утверждений. Затем утвердите, если кнопка включена.
Вы пробовали:
target.frontMostApp().mainWindow().scrollViews()[0].elements()[element_name].tableViews()[0].**cells()**.firstWithPredicate("name contains[c] 'Brooklyn'").elements()["detailsButton"]
?
Также опубликуйте еще одно изображение, которое показывает, что UIATableCell расширилось там, где существует файл details.
Вы должны использовать ButtonType=Custom
but=[UIButton buttonWithType:UIButtonTypeCustom];
Вы должны использовать собственный тип кнопки.
Я не знаю, почему вы используете UI Automation. Но насколько я знаю о добавлении UIButton
в tableviewcell-
1) просто добавьте UIButton в UITableViewCell
.
2) установите значение тега UIButton's
и добавьте цель к этой кнопке.
3) В методе целевой кнопки вы можете получить объект UIButton
и сделать свой материал там.
Надеюсь, это поможет вам.
Я столкнулся с той же проблемой. После того, как я добавил задержку, она работает.
UIATarget.localTarget().delay(1);
Вы можете отправить событие перехода по всему окну:
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
Вы пробовали это?
target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].elements().firstWithPredicate(name contains[c] 'Brooklyn').buttons()["detailsButton"].tap()