2

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

在此处输入图像描述

我尝试了以下方法,但还没有成功。什么是正确或好的方法。一般来说,withName 可以与任何 UIAElement 一起使用吗?

  1. mainWindow().withName("11:00 AM")
  2. target.frontMostApp().mainWindow().tableViews()[0].cells() 1 .tableViews()[0].cells()["11:00 am"]

请注意,使用硬编码位置标识元素是有效的。像下面

target.frontMostApp().mainWindow().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

4

1 回答 1

3

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

您正在考虑的是withName()on 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();

当您运行其中任何一个建议时会发生什么?

于 2013-01-25T23:12:01.530 回答