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

iOS自动化:如何点击没有id的按钮,ios,automated-tests,ios-ui-automation,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()) 但是,这一行并不总是有效的,因为索引正在变化。我只是想问,除了使用索引,还有没有其

我在
logElementTree
输出中有以下项目:

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

UIAButton: rect:{{140, 427}, {41, 41}}
这些按钮没有标识符,没有名称,并且没有在XIB中绘制。在我的自动化测试脚本中,我只使用索引(类似于
target.frontMostApp().mainWindow().buttons()[7].tap()


但是,这一行并不总是有效的,因为索引正在变化。我只是想问,除了使用索引,还有没有其他方法可以点击这个按钮?请注意,按钮没有名称,因此我不能使用按钮()[“名称”)。点击()

从技术上讲,这是做您想做的事情的最佳方式,因此我将把它留给其他看到此问题的开发人员。在您的情况下,由于您的技术经验有限,我建议您让开发人员为按钮分配ID或名称。为按钮和其他UI元素提供好的名称意味着那些视力受损的用户也可以访问你的应用程序,因为voiceover会读取你为按钮指定的名称。下面的代码块将以编程方式为符合
UIAccessibility
的动态创建的对象分配标签和辅助功能提示

根据苹果的文档(在这种情况下,他们是在视图上进行的,但你可以在任何对象(如按钮)上进行):

Javascript“hack”(不是很干净,但可以工作…)


从技术上讲,这将是做您想做的事情的最佳方式,所以我将把它留给其他看到这个问题的开发人员。在您的情况下,由于您的技术经验有限,我建议您让开发人员为按钮分配ID或名称。为按钮和其他UI元素提供好的名称意味着那些视力受损的用户也可以访问你的应用程序,因为voiceover会读取你为按钮指定的名称。下面的代码块将以编程方式为符合
UIAccessibility
的动态创建的对象分配标签和辅助功能提示

根据苹果的文档(在这种情况下,他们是在视图上进行的,但你可以在任何对象(如按钮)上进行):

Javascript“hack”(不是很干净,但可以工作…)


为什么你不能用编程的方式给它命名或索引?@JackLawrence你能给我举个例子说明怎么做吗?谢谢。你为什么不能用编程的方式给它起个名字或索引呢?@JackLawrence你能给我举个例子吗?谢谢。谢谢你的回答,但是我不是很擅长编程,我是一个喜欢尝试自动化的测试人员,所以你的答案我不太清楚。我只想知道是否有办法点击按钮(没有id/名称),而不是使用索引。再次感谢。根据你的回答,我认为你的意思是你更愿意站在javascript一边,对吗?我会相应地更新我的答案。谢谢你的答案,但我并不擅长编程,我是一名喜欢尝试自动化的测试人员,所以你的答案对我来说并不清楚。我只想知道是否有办法点击按钮(没有id/名称),而不是使用索引。再次感谢。根据你的回答,我认为你的意思是你更愿意站在javascript一边,对吗?我会相应地更新我的答案。
- (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)];
}
var window = UIATarget.localTarget(); 
window.tap({x:yourXCoordinateHere , y:yourYCoordinateHere});