用名称识别 UIAutomation 中的单元格
Posted
技术标签:
【中文标题】用名称识别 UIAutomation 中的单元格【英文标题】:Identifying a cell in UIAutomation with name 【发布时间】:2013-01-25 22:51:40 【问题描述】:我正在尝试如何使用 UIAutomation 框架使用名称来识别表格视图中的单元格。这是乐器编辑器视图的屏幕截图。
我尝试了以下方法,但还没有成功。什么是正确或好的方法。通常 withName 是否适用于任何 UIAElement?
-
mainWindow().withName("11:00 AM")
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
【问题讨论】:
【参考方案1】:为澄清起见,UIAElement
上的 withName()
方法是一个测试元素是否具有该名称。如果是则返回元素,否则返回UIAElementNil
。
您想到的是UIAElementArray
上的withName()
,它将元素数组的结果过滤为仅具有给定名称的那些。
您在窗口上调用了withName()
,这不起作用。这些查询方法不会对元素树进行深度遍历来查找内容。您需要像在第 2 行中那样进行遍历。
不过,我不太确定它为什么坏了。看起来您正在正确遍历。我的预感是该名称可能隐藏了额外的空白字符或 unicode,而简单的字符串“11:00 am”不匹配。
我有几个建议来追踪这个问题。为您的内部表格视图创建一个中间变量。输入这些建议对我来说会更容易。
var innerTableView = target.frontMostApp().mainWindow().tableViews()[0].cells().tableViews()[0];
现在试试这两个建议,让我知道它说的是什么:
-
记录第二个单元格名称的全文,看看是什么:
UIALogger.logMessage("Name is '" + innerTableView.cells()[2].name() + "'");
如果这不能帮助您解决问题,请尝试使用谓词匹配:innerTableView.cells().firstWithPredicate("name contains '11:00 am'").logElement();
当您运行其中任何一个建议时会发生什么?
【讨论】:
按照您的第一个建议并添加一个 for 循环,我能够找出问题所在。我打电话的时间不对。谢谢!以上是关于用名称识别 UIAutomation 中的单元格的主要内容,如果未能解决你的问题,请参考以下文章