【问题标题】:iOS UI Automation with a lot of scrolling带有大量滚动的 iOS UI 自动化
【发布时间】:2014-05-29 04:14:16
【问题描述】:

在过去的一周里,我一直在调整 Xcode/Instruments/UIAutomation 脚本,试图让应该可以轻松自动化工作的东西。但没有什么能像我预期的那样奏效。

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

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

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

我已尝试按名称查找元素并使用 scrollToVisible... 如果相关控件“只是”在屏幕外,这似乎可行,但仅此而已。

除了有一个循环重复进行少量滚动直到它看到它正在寻找的控件之外,还有什么解决方法吗?

谢谢!

【问题讨论】:

    标签: ios iphone xcode instruments ui-automation


    【解决方案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
        ....
    }
    

    【讨论】:

      【解决方案2】:

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

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

      如果你想滚动到下一页

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多