gpt4 book ai didi

ios - 在 EarlGrey 中随机选择

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:37:44 26 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

第 1 步 使用 GREYElementMatcherBlock 编写一个匹配器,它可以对匹配给定匹配器的元素进行计数:

- (NSUInteger)elementCountMatchingMatcher:(id<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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com