EarlGrey冻结动画并且不会回叫

时间:2017-02-08 22:14:44

标签: ios objective-c xcode xcode-ui-testing earlgrey

有一种方法将异步块作为参数。

应用程序第一次运行时,会调用此方法,并且有一个覆盖整个屏幕的动画。该方法正在进行网络呼叫,这可能需要相当长的时间,大约7秒左右。当块运行时,回调结束动画,应用程序准备再次与之交互。

当我在模拟器中运行应用程序并点击时,一切都按预期运行。当我运行EarlGrey测试目标时,动画会冻结,测试最终会失败,因为有一个元素无法找到。在动画视图(UIView的子类)后面,即使元素不可见,仍然可以成功执行某些步骤。

最后,这只发生在应用程序的第一次运行,因为后续测试运行中的网络调用要短得多。

我已尝试更改配置以停用动画,似乎没有任何内容对我有用。我无法粘贴代码,因为该应用是专有的。

我很乐意回答任何澄清问题,非常期待一些帮助!

2 个答案:

答案 0 :(得分:1)

免责声明:这都是@khandpur。我加入了Google Open Source Slack频道,他帮我调试了很多。

问题在于使用Facebook's Shimmer。我在setUp方法中使用了这一行:

[UIApplication sharedApplication].keyWindow.layer.speed = 100;

这加快了动画速度,但是引起了一些闪光的冲突,不太清楚为什么。我要在他们的回购中发表评论。

我删除了这一行,虽然测试速度稍慢,但现在它们完全稳定了。

答案 1 :(得分:0)

您是否考虑过使用kGREYConfigKeyURLBlacklistRegex将URL列入黑名单,即阻止EarlGrey等待请求? (假设你的测试不需要网络等待)。见EarlGrey/Common/GREYConfiguration.h