在 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 iOS - 删除表格单元格

如何在相对布局中添加固定标题和滚动视图表行?

UIAutomation 和在滚动视图中读取静态文本

在 UIAutomation 的自定义表格部分标题视图上设置 accessibilityIdentifier

如何在 Iphone UIAutomation 中编辑表格时选择 (-) 图标

iPhone UIAutomation:找不到表格视图的子元素