3

我正在为我的 iOS 应用程序编写自动化测试,我试图弄清楚当视图控制器完全加载并在屏幕上时如何在 javascript 脚本中检测......

所以现在例如脚本点击一个按钮:

target.frontMostApp().mainWindow().buttons()["loginButton"].tap();

然后,一旦应用程序登录(可能需要几秒钟或更短的时间),我需要按另一个按钮。

现在,我通过简单地延迟使其工作:

target.delay(3);

但我希望能够检测下一个视图控制器何时加载,以便我知道我可以访问刚刚加载的新屏幕上的元素。

有什么建议么?

4

3 回答 3

2

有一些方法可以实现:

  1. 调整库

    https://github.com/alexvollmer/tuneup_js

    我真的建议检查一下。他们有一些有用的包装函数来编写更高级的测试。编写了一些方法来扩展UIAElement类。他们有waitUntilVisible()方法。

    但是元素本身可能为零。这不是能见度的问题,只是还没有出现在屏幕上。

  2. UIATargetInstance.pushTimeout(delay)UIATargetInstance.popTimeout()

    苹果文档说:

    为了在这种情况下提供一些灵活性并让您更好地控制时间,UI 自动化提供了一个超时期限,在此期间它会在失败之前反复尝试执行指定的操作。如果操作在超时期间完成,则该行代码将返回,您的脚本可以继续。如果操作在超时期间未完成,则会引发异常。默认超时时间为 5 秒,但您的脚本可以随时更改它。

    您也可以使用UIATarget.delay(delay);函数,但这会延迟下一条语句的执行,而不必等待查找元素。setTimeout(delay)也可用于在 UIAutomation 决定找不到元素之前全局设置超时。

    Apple 的指南在这里解释了对框架的更多理解。http://developer.apple.com/library/IOS/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/UsingtheAutomationInstrument/UsingtheAutomationInstrument.html

于 2012-10-12T04:59:59.540 回答
1

在大多数情况下,简单地识别特定于下一个视图控制器的元素就足够了。然而,元素的描述必须是新 UI 独有的。

IE target.frontmostApp().mainWindo().navigationBar()["My Next View"];

脚本应该延迟,直到可以识别元素或达到超时(请参阅 参考资料pushTimeout popTimout)。

在某些情况下,可能需要指定元素是可见的。

.withValueForKey(1, "isVisible")

也可以用来waitForInvalid做相反的事情(等待前一个 UI 中的某些内容消失)。

于 2012-09-20T14:31:40.007 回答
0

在此处搜索调整库

参考函数 waitUntilVisible 相同。您可以包含其他文件以支持其中的功能。希望它有所帮助。

于 2012-09-15T12:17:40.983 回答