Автоматизация iOS: как нажать кнопку без идентификатора - PullRequest
2 голосов
/ 10 января 2012

У меня есть следующие элементы в выводе logElementTree:

UIAButton: rect:{{20, 427}, {41, 41}}

UIAButton: rect:{{140, 427}, {41, 41}}

Эти кнопки не имеют ни идентификатора, ни имени, и не отображаются в XIB.В моем сценарии тестирования автоматизации я использую только индекс (что-то вроде target.frontMostApp().mainWindow().buttons()[7].tap())

Но тогда эта строка не всегда будет работать, потому что индекс меняется.Я просто хочу спросить, есть ли способ нажать эту кнопку, кроме использования индекса?Обратите внимание, что кнопка не имеет названия, поэтому я не могу использовать buttons()["name'"].tap()

1 Ответ

0 голосов
/ 11 января 2012

Технически это был бы лучший способ сделать то, что вы хотели бы, поэтому я оставлю это здесь для других разработчиков, которые видят этот вопрос.В вашем случае, поскольку у вас ограниченный технический опыт, я бы рекомендовал вашему разработчику назначить идентификаторы или имена для кнопок.Предоставление хороших имен для кнопок и других элементов пользовательского интерфейса означает, что ваше приложение также доступно для пользователей с ослабленным зрением, так как голос за кадром будет читать им имена, которые вы дали своим кнопкам.Следующий блок кода программно назначит метку и подсказку о доступности динамически созданному объекту, который соответствует UIAccessibility.

Из документации Apple (в этом случае они делают это в представлении, но выможет сделать это на любом объекте, как кнопка):

- (id)init
{
  _view = [[[MyCustomView alloc] initWithFrame:CGRectZero] autorelease];
  [_view setIsAccessibilityElement:YES];

  [_view setAccessibilityTraits:UIAccessibilityTraitButton];
  [_view setAccessibilityLabel:NSLocalizedString(@"view.label", nil)];
  [_view setAccessibilityHint:NSLocalizedString(@"view.hint", nil)];
}

http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/iPhoneAccessibility/Making_Application_Accessible/Making_Application_Accessible.html#//apple_ref/doc/uid/TP40008785-CH102-SW5

Javascript "взломать" (не очень чистый, но работает ...):

var window = UIATarget.localTarget(); 
window.tap({x:yourXCoordinateHere , y:yourYCoordinateHere});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...