• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 在 EarlGrey 中随机选择

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:31:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 XCTest 编写相当复杂的 UI 测试,最近改用 EarlGrey,因为它更快且更可靠 - 测试不会在构建服务器上随机失败,并且测试套件可能需要多达一半小时跑!

我在 EarlGrey 中无法做到但我可以在 XCTest 中做到的一件事是随机选择一个元素。

例如,在日历 collectionView 上,我可以使用 NSPredicate 查询所有带有 'identifier' 的 collectionViewCell,然后随机使用 [XCUIElementQuery count] 选择一天以获取索引,然后点击

现在,我将对其进行硬编码,但我希望随机选择日期,这样如果我们更改应用代码,我就不必重写测试。

如果我能详细说明,请告诉我,期待解决这个问题!



Best Answer-推荐答案


第 1 步编写一个匹配器,它可以使用 GREYElementMatcherBlock 计算元素匹配给定匹配器:

- (NSUInteger)elementCountMatchingMatcherid<GREYMatcher>)matcher {
  __block NSUInteger count = 0;
  GREYElementMatcherBlock *countMatcher = [GREYElementMatcherBlock matcherWithMatchesBlock:^BOOL(id element) {
    if ([matcher matches:element]) {
      count += 1;
    }
    return NO; // return NO so EarlGrey continues to search.
  } descriptionBlock:^(id<GREYDescription> description) {
    // Pass
  }];
  NSError *unused;
  [[EarlGrey selectElementWithMatcher:countMatcher] assertWithMatcher:grey_notNil() error:&unused];
  return count;
}

第 2 步使用 % 选择随机索引

NSUInteger randomIndex = arc4random() % count;

第 3 步 最后使用 atIndex: 选择该随机元素并对其执行操作/断言。

// Count all UIView's
NSUInteger count = [self elementCountMatchingMatcher:grey_kindOfClass([UIView class])];
// Find a random index.
NSUInteger randIndex = arc4random() % count;
// Tap the random UIView
[[[EarlGrey selectElementWithMatcher:grey_kindOfClass([UIView class])]
    atIndex:randIndex]
    performAction:grey_tap()];

关于ios - 在 EarlGrey 中随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863692/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap