在 iOS UIAutomation 中滚动表格视图时,scrollToVisible 不起作用
Posted
技术标签:
【中文标题】在 iOS UIAutomation 中滚动表格视图时,scrollToVisible 不起作用【英文标题】:scrollToVisible not working in while scrolling a tableview in iOS UIAutomation 【发布时间】:2012-03-14 18:21:00 【问题描述】:我正在为 ios 中的UIAutomation
编写脚本。我正在录制 UITableView
在 Instruments 中滚动,但是当我运行相同的录制脚本时,它不会滚动 view
。
它调用“scrollToVisible”来滚动。例如:
target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].cells()[3].scrollToVisible();
不过,它不会滚动它,因此在点击此元素时会出错。为什么会这样?
【问题讨论】:
【参考方案1】:在调用 scrollToVisible() 之前尝试检查您尝试操作的元素是否为 isValid 或/和 isVisible
var cellToScroll = target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].cells()[3];
if ( cellToScroll.checkIsValid() )
if (!cellToScroll.isVisible() )
cellToScroll.scrollToVisible();
// do other actions with object
else
UIALogger.logMessage("object is invalid");
此外,有时记录器会捕获不可见的元素。例如,您有 2 个视图。视图 1 和视图 2。 View1 有 scrollView>table>cells。 View2 有一些不可访问的元素。 View2 显示在 view1 上。在这种情况下,记录器将忽略 View2 并捕获 view1 元素。 在这种情况下,运行脚本将给出相同的错误。 checkIsValid() 将返回 true,isVisible() 将返回 false,并且脚本将在 cellToScroll.scrollToVisible() 上失败并出现相同的错误;在这种情况下,您需要进行一些额外的验证,例如 - View2 是否可见或类似的东西。
【讨论】:
【参考方案2】:我知道这是不久前提出的,但上面的代码不起作用。这是因为 isVisible() 返回一个数字而不是布尔值。要查看单元格在页面上是否可见,您必须检查 isVisible() 是否返回 1:
if (cellToScroll.isVisible() == 1 )
cellToScroll.scrollToVisible();
【讨论】:
没关系,如果(0)不会执行,但如果(1)会执行以上是关于在 iOS UIAutomation 中滚动表格视图时,scrollToVisible 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 UIAutomation 的自定义表格部分标题视图上设置 accessibilityIdentifier