iOS自动化:如何点击没有ID的按钮

时间:2012-01-10 06:28:45

标签: ios automated-tests ios-ui-automation

我在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 :(得分:0)

从技术上讲,这是做你想做的最好的方式,所以我会把它留给其他看到这个问题的开发者。在您的情况下,由于您的技术经验有限,我建议您让开发人员为按钮指定ID或名称。为按钮和其他UI元素提供良好的名称意味着您的应用程序也可以为视力受损的用户访问,因为画外音会读取您给按钮的名称。以下代码块将以编程方式将标签和辅助功能提示分配给符合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" hack" (不是很干净,但有效......):

var window = UIATarget.localTarget(); 
window.tap({x:yourXCoordinateHere , y:yourYCoordinateHere});