【问题标题】:scrollToVisible not working in while scrolling a tableview in iOS UIAutomation在 iOS UIAutomation 中滚动表格视图时,scrollToVisible 不起作用
【发布时间】:2012-03-14 18:21:00
【问题描述】:

我正在为 iOS 中的UIAutomation 编写脚本。我正在录制 UITableView 在 Instruments 中滚动,但是当我运行相同的录制脚本时,它不会滚动 view

它调用“scrollToVisible”来滚动。例如:

target.frontMostApp().mainWindow().scrollViews()[0].tableViews()[0].cells()[3].scrollToVisible();

不过,它不会滚动它,因此在点击此元素时会出错。为什么会这样?

【问题讨论】:

    标签: ios ui-automation ios-ui-automation


    【解决方案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)会执行
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多