UIAutomation超时使用

时间:2012-10-31 12:04:52

标签: iphone objective-c ui-automation

伙计帮助我了解超时使用情况。该文档提供了很多关于它们的文字:

popTimeout- Retrieves the previous timeout value from a stack, restores it as the current timeout value, and returns it.

pushTimeout - Stores the current timeout value on a stack and sets a new timeout value.

他们还提供了一些代码:

target = UIATarget.localTarget();

target.pushTimeout(2);
    // attempt element access
target.popTimeout();

但我并不完全明白如何以及何时使用它们。 anybode可以举个例子吗?

1 个答案:

答案 0 :(得分:1)

在自动化测试期间,某些元素可能无法立即显示。因此,仪器使用超时(默认为5秒)来等待所请求的元素。他们称之为宽限期。

有时默认的宽限期可能不是您所需的,因此您可以将超时更改为更短或更长的值。 使用pushTimeout和popTimeout可确保在调用popTimeout后恢复先前的宽限期,而无需记住先前的宽限期。

例如:在我的一个测试中,我不想等待弹出窗口变为活动状态,但我只是想知道是否有弹出窗口,并且如果存在,则将其解除:

target.pushTimeout(0.0);

if ( target.isDeviceiPad() && ! isNull( popOver= app.mainWindow().popover() ) )
{
    UIALogger.logDebug(" dismiss popup by tapping somewhere");
    popOver.dismiss();
    target.delay(0.2);
}
target.popTimeout();

顺便说一句,isNull()是我自己制作的一个自定义函数,但你可能已经了解了发生了什么。