在iOS UIAutomation中滚动tableview时,scrollToVisible无法正常工作

时间:2012-03-14 18:21:00

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

在调用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个视图。 View1和View2。 View1具有scrollView> table>单元格。 View2有一些nonAccessible元素。 View2显示在view1上。在这种情况下,记录器将忽略View2并捕获view1元素。 在这种情况下,运行脚本将给出相同的错误。 checkIsValid()将返回true,isVisible()将返回false,并且在具有相同错误的cellToScroll.scrollToVisible()上脚本将失败;在这种情况下,您需要进行一些额外的验证,例如 - View2是可见的还是类似的。

答案 1 :(得分:-1)

我知道这是前一段时间被问过,但上面的代码不起作用。这是因为isVisible()返回一个数字而不是布尔值。要查看单元格是否在页面上可见,您必须检查并查看isVisible()是否返回1:

if (cellToScroll.isVisible() == 1 )
{
    cellToScroll.scrollToVisible();
}