iOS UIAutomation中alert处理方法

本文介绍如何使用UIAutomation自定义处理iOS应用中的Alert弹窗。通过重写UIATarget.onAlert方法,可以根据弹窗内容实现不同的自动化操作。文章提供了一段示例代码,展示了如何根据弹窗标题和消息来决定点击哪个按钮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/close_marty/article/details/37907323

测试的过程中弹出Alert不会中断测试的执行,因为测试工具会自动处理弹框,它的处理方法就是点击弹框的取消按钮。

贴上一段代码

[javascript]  view plain copy
  1. UIATarget.onAlert = function onAlert(alert){  
  2.   var title = alert.name();  
  3.   var message = alert.scrollViews()[0].staticTexts()[1].name();  
  4.   UIALogger.logWarning("Alert with title " + title + new Date().getTime());  
  5.   if (title == "努力加载中,是否继续等待?"){  
  6.     alert.buttons()[1].tap();  
  7.     return true;  
  8.   }  
  9.   if (message == "抱歉,加载详情页时间过长") {  
  10.     alert.buttons()["取消"].tap();  
  11.     detailFail = 1;  
  12.     return true;  
  13.   }  
  14.   if (message == "抱歉,获取视频信息失败,请重试") {  
  15.     alert.buttons()["确定"].tap();  
  16.     detailFail = 1;  
  17.     return true;  
  18.   }  
  19.   return false;         
  20. }  

我们通过自己指定的onAlert()这么一个function给automation的UIATarget.onAlert,实现了对弹框的手动处理。

alert.name()通常可以获取到弹框的内容,当然有时候弹框里面会有多个staticTexts,可以具体alert.logElementTree()查看它的构成。

然后我们可以通过alert.buttons(),对指定的按钮进行操作。

这个方法默认的返回是false,这就是告诉automation "这个弹框我不处理,交给你来",

return true 就是 “这个弹框我已经处理过了,你就不要再管了”。


这个方法是不需要手动调用的,当有弹框出现时,automation会自动调用这个方法,所以你只需要在你的脚本开头,写上这个方法就可以了。


***在写UIAutomation相关代码时,由于有时候会开启instruments,这时再用instruments -w -t -e的方式运行脚本就会产生异常:UIAScriptAgentSignaledException ,所以看到该异常时关掉instruments即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值