XCUITest - 单击后退按钮后,除了睡眠之外,我还能使用啥来在屏幕上查找项目?

Posted

技术标签:

【中文标题】XCUITest - 单击后退按钮后,除了睡眠之外,我还能使用啥来在屏幕上查找项目?【英文标题】:XCUITest - What else can I use besides sleep to find an item on the screen after the back button was clicked?XCUITest - 单击后退按钮后,除了睡眠之外,我还能使用什么来在屏幕上查找项目? 【发布时间】:2020-08-17 19:52:52 【问题描述】:

我们有多个单击后退按钮的 ios XCUITest。单击此按钮后,我们在测试中执行其他操作(许多不同的事情取决于测试)。但是,在我们应用程序的某些屏幕上,无论下一步是什么(另一个按钮单击、断言等),除非使用睡眠,否则测试将失败。似乎测试没有等待下一个屏幕完成它正在做的事情。这可能是绘制 ui 元素、正在运行的背景项目等。当我添加 5 秒的睡眠时,测试很好并继续完成,没有任何问题。在自动化方面,我的理解是睡眠并不理想,应尽可能避免。另外,我相信 XCUITests 有一些内置的等待时间来等待元素。但是,在这种情况下,如果没有睡眠,那么测试就会失败。

那么,为了改进自动化测试,除了 sleep 之外,我们还可以尝试哪些建议来实现像单击后退按钮这样的屏幕转换?

【问题讨论】:

【参考方案1】:

您可以等待新屏幕上的元素出现或等待前一屏幕上的元素消失。

使用newElement.waitForExistence(timeout: 5)

previousElement.waitForDisappearance(timeout: 5)

抓住waitForDisappearance这里https://github.com/devexperts/screenobject

【讨论】:

是的,我同意。我添加了一些等待会加载到屏幕下方的项目。到目前为止,这似乎有效。仅在我们要点击的元素上等待,XCode 中内置的默认等待,是行不通的。我只是想知道 XCode 是如何找到该元素的,但它不可用。似乎它应该比它做得更好。无论如何,使用这种等待应该在我想要的元素之后加载的其他内容的方法是一个好主意,并且似乎正在工作。谢谢! 我发现waitForExistence 更有用,因为页面通常加载速度较慢,而不是加载速度慢。

以上是关于XCUITest - 单击后退按钮后,除了睡眠之外,我还能使用啥来在屏幕上查找项目?的主要内容,如果未能解决你的问题,请参考以下文章

除了单击按钮之外,如何在 jQuery 中触发模糊?

在 XCUITest 的可访问性指示器中找不到 stackview

Swift:单击后退按钮后错过标签栏

注销后单击后退按钮缓存问题

根视图控制器上显示的后退按钮

单击系统后退按钮后,通过点击推送通知运行的应用程序正在关闭