关闭

iOS UIAutomation中alert处理方法

441人阅读 评论(0) 收藏 举报

转自:http://blog.csdn.net/close_marty/article/details/37907323

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

贴上一段代码

[javascript] view plaincopy
  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即可。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:36824次
    • 积分:510
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:43篇
    • 译文:0篇
    • 评论:4条
    最新评论