使用名称识别UIAutomation中的单元格

时间:2013-01-25 22:51:40

标签: javascript ios-ui-automation

我正在尝试如何使用UIAutomation框架使用名称来识别表视图中的单元格。这是乐器编辑器视图的截图。

enter image description here

我尝试了以下方法但尚未成功。什么是正确或好的方法。通常,withName可以与任何UIAElement一起使用吗?

  1. mainWindow()。withName(“11:00 AM”)
  2. target.frontMostApp()。mainWindow()。tableViews()[0] .cells()1。tableViews()[0] .cells()[“11:00 am”]
  3. 请注意,识别具有硬编码位置的元素有效。如下所示

    target.frontMostApp()。主窗口()。tableViews()[0] .cells()。tableViews()[0] .cells()[2]

    苹果文档中提到了

    withName - http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html#//apple_ref/javascript/cl/UIAElement#withName

1 个答案:

答案 0 :(得分:3)

为了澄清,withName()上的UIAElement方法是测试元素是否具有该名称的测试。如果是,则返回元素,否则返回UIAElementNil

您所考虑的是withName() UIAElementArray,它将元素数组的结果过滤为仅具有给定名称的结果。

您在窗口上调用withName(),这将无效。这些查询方法不会对元素树进行深度遍历来查找内容。你需要像在第2行那样进行自己的遍历。

但是,我不太确定为什么它会被打破。看起来你正好穿越了。我的预感是该名称可能隐藏了额外的空白字符或unicode,简单字符串“11:00 am”不匹配。

我有几个建议来追踪这一点。为内部表视图创建一个中间变量。我可以更轻松地输入这些建议。

var innerTableView = target.frontMostApp().mainWindow().tableViews()[0].cells().tableViews()[0];

现在尝试这两个建议,让我知道它的内容:

  1. 记录第二个单元格名称的全文,以查看它的内容:UIALogger.logMessage("Name is '" + innerTableView.cells()[2].name() + "'");
  2. 如果这无法帮助您解决问题,请尝试与谓词匹配:innerTableView.cells().firstWithPredicate("name contains '11:00 am'").logElement();
  3. 当您运行其中任何一项建议时会发生什么?