iOS UIAutomation中执行语句时默认的超时时间

测试代码运行中有这样一种情况:

同样的语句,在有的时候运行很快,有时候运行很慢。

这时因为automation内部的超时机制,当你的语句尝试获取或者是操作某个元素,而当前界面又没有这个元素时,automation会有一个超时时间,它会在这期间不停的尝试重复执行这条语句直到操作成功,如果超时时间结束后仍然无法完成这个操作,那么这条语句才会失败并抛出异常。automation默认的超时时间是5秒。

虽然这个设定一定程度上提高了测试脚本的健壮性,但是在个别的时候,它会影响脚本的执行效率。因此,当我们需要时,我们可以修改这个超时时间。

有三个相关的方法

pushTimeout(1) :把自定义的超时时间(1s)入栈,此后的超时时间都变为1s (automation采用栈来存储这个超时时间,默认栈底的时间就是系统的5s)

popTimeout():出栈,通常和上面这条语句搭配使用,用以恢复默认超时时间(5s)

setTimeout(1):和上面的栈操作不同,这个方法直接改变默认的超时时间,具有全局效应。不建议使用。

pushTimeout和popTimeout搭配起来可以灵活的处理超时时间,在有必要的地方使用以提高测试脚本的效率。

举个栗子

function waitForDownloadResult() {
    UIATarget.localTarget().pushTimeout(0.5);
    var temp =4;
    while (temp>0) {
	if (window.staticTexts()["任务创建成功"].isValid()) {
	    screenShoot("任务创建成功");	 
	}
	if (window.staticTexts()["任务已创建"].isValid()) {
	    screenShoot("任务已创建");
	}
	temp -= 1;
    }
    UIATarget.localTarget().popTimeout();
}
在等待捕获一闪而过的提示语(1.5s),如果不修改超时时间,当提示语是"任务已创建"的时候,是无法捕获到的,因为第一个if语句就会卡住5s,在此期间提示语就已经消失了。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值