ios - 当我搜索大量 TableViewCells 时,EarlGrey 卡住了一段时间

标签 ios earlgrey

我当时正在开发一个基本的 iOS 教程应用程序,并且认为我也可以开始使用它学习一些 EarlGrey。我正在自动化的测试有这个流程 -

  • 我有一个很大的 UITableView,我用我生成的一些随机词预先填充了它。这些可能会很长,我的 TableView 中可能有超过 100 个单元格。

  • 在我的测试中,我随机选择一个生成的词并在单元格中搜索它。每个单元格都有以下 UI:

        |                                         |
        |   |Word|  |Word-Count| |  UIImage   |   |
        |                                         |
    

所以在 EarlGrey -

- (void)setup {
    [super setup];
    GeneratorClass dataSource =
        [[GeneratorClass alloc] initWithRandomData];
    self.tableView.dataSource = dataSource;
    _randomSelectedValue = dataSource.randomValue;
}
- (void)testTableElementVisible {
    id<GREYMatcher> *cellMatcher = grey_allOf(grey_minimumVisiblePercent(0.0f), 
                                   grey_interactable(), 
                                   grey_isKindOfClass([UITableViewCell class]), 
                                   grey_text(_randomSelectedValue), nil);
    [[EarlGrey selectElementWithMatcher:cellMatcher] 
        asserWithMatcher:grey_sufficientlyVisible()];
    [[EarlGrey selectElementWithMatcher:cellMatcher]    
        performAction:grey_tap()];
}

但是,在 Jenkins 上,此测试需要很长时间才能运行并失败,“查找元素时发生超时(当前设置为 30)。” 屏幕卡住,但我可以在本地看到水龙头发生了,我没能让它传递下去。有什么方法可以加快这个测试,或者我在这里做的有什么问题导致 EarlGrey 卡住?

最佳答案

难怪要花这么长时间。您将 grey_minimumVisiblePercent 作为 grey_allOf 中的第一个匹配器。这样做的目的是按照指定的顺序通过这些匹配器运行 ui 层次结构中的每个元素,并且仅当其中一个匹配器失败或所有匹配器都通过(即匹配)时才停止。为了避免这个问题,你应该总是做最具选择性到最少选择性的匹配器。使用该逻辑,grey_text(_randomSelectedValue) 似乎是最具选择性的,因此将其用作第一个匹配器,然后按照选择性递减的顺序使用其他匹配器。

关于ios - 当我搜索大量 TableViewCells 时,EarlGrey 卡住了一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38431905/

相关文章:

ios - 以编程方式呈现 ViewController 的嵌入 NavigationController

ios - Tealium 框架 "dyld: Library not loaded:"使用 cocoapods 时出错

ios - 如何在 UITextView 中显示 NSArray

ios - 清除 iOS BLE 缓存

ios - EarlGrey 尝试等待 5.0 秒让应用程序达到空闲状态

ios - 使用 EarlGrey 点击 UITabBarItem

ios - 如何在应用程序未激活时隐藏 iOS 应用程序内容 View ?

swift - Gray Matcher 获取多个元素的文本匹配同一个灰色匹配器

earlgrey - EarlGrey 同步总是超时的问题

ios - 使用 EarlGrey 按下导航栏上的后退按钮