我当时正在开发一个基本的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上,此测试需要花费很长时间才能运行,并且"Timeout (currently set to 30) occurred when looking for elements."
显示为“失败”。屏幕被冻结,尽管在本地可以看到敲击,但我无法通过它。有什么方法可以加快此测试的速度,或者我在这里做错什么导致EarlGrey冻结了?
难怪它花了这么长时间。您是grey_minimumVisiblePercent
中的第一个匹配器grey_allOf
。这样做是按照指定的顺序在那些匹配器中运行ui层次结构中的每个元素,并且仅在匹配器之一失败或所有匹配器通过(即匹配)时才停止。为了避免出现此问题,您应该始终执行选择性最高的匹配器至选择性最低的匹配器。使用该逻辑grey_text(_randomSelectedValue)
似乎是最有选择性的,因此将其用作第一个匹配器,然后按递减的顺序使用其他逻辑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句