iOS UI自动化有很多滚动

时间:2014-04-15 01:15:52

标签: ios iphone xcode instruments ui-automation

过去一周我花了一些时间来调整Xcode / Instruments / UIAutomation脚本,试图让自动化变得简单。但没有任何效果,正如我所期望的那样。

据我所知,这是由于控件在离屏时虚拟化的方式。问题是,在我明确滚动到它之前,我在任何给定时间需要测试的绝大部分都不会被渲染。

具体来说,我有一个包含两个页面的UIAScrollView。第二页有一个包含大量单元格的集合,偶尔还有StaticText。

我还没有找到一种很好的方法来验证StaticText是否正在显示它们应该显示的内容。我找到的唯一方法是查看当前屏幕上的StaticTexts,滚动少量,查看它是否发生了变化,并继续这样做。这是有问题的,特别是因为我最终到了底部并且没有明确的方法来告诉我已完成滚动。

我已经尝试按名称查找元素并使用scrollToVisible ...如果有问题的控件在屏幕上“只是”,但这样才会有效。

是否有任何解决方法除了有一个循环,它会反复进行少量滚动,直到它看到它正在寻找的控件?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以获取单元格数组的长度并循环遍历它。一种方法是:

for (var index = 0; index < mainWindow().scrollViews()[0].cells().length; index++)
{
    var currentCell = mainWindow().scrollViews()[0].cells()[index];
    mainWindow().scrollViews()[0].scrollToElementWithName(currentCell.name());

    //Do whatever you need to do
    ....
}

答案 1 :(得分:0)

您可以先检查它是否有效,但检查是否可见请参阅以下....

if ( window.staticTexts()["YourStaticText"].checkIsValid() )
{
if (!window.staticTexts()["YourStaticText"].isVisible() )
{
    UIALogger.logMessage("object is valid");
    window.staticTexts()["YourStaticText"].scrollToVisible();

}
}

如果你想将它滚动到下一页

window.staticTexts()["YourStaticText"].scrollDown();