ios – UIAutomation:在点击之前检查元素是否存在

我们有一个iPad应用程序,其中包含一个两列的新闻阅读器.左视图包含一些新闻的列表,其中某些链接直接发布到新闻,有些则将另一个视图控制器与另一个新闻列表.这也将导致将UIButton设置为导航栏的leftBarButtonItem.如果我们处于第一级,那么无法轻拍的简单图像就是leftBarButtonItem.

我的目标是要测试一下水龙头上的每一个消息.如果一个消息导致二级列表,它应该在导航栏中点击UIButton.

如何检查,如果leftBarButtonItem是“tappable”?因为它可以是图像或按钮,只需调用navigationBar().leftButton().tap()将导致错误,如果它是一个图像.

如果没有任何帮助,我也使用了调优库.

解决方法

UIAutomation中的几乎所有元素都可以被挖掘出来.无论是图像,视图还是按钮都不重要.如果您尝试点按的对象无效,您将收到错误.
如何检查:
if ( navigationBar().leftButton().checkIsValid() )
{
     navigationBar().leftButton().tap();
}
else
{
     //do what you need.
}

或者您可以检查您尝试点击的对象是否是一个按钮,例如(不是最好的方法,但它有效):

if ( navigationBar().leftButton().toString() == "[object UIAButton]" )
{
    navigationBar().leftButton().tap();
}
else
{
     //do what you need.
}

checkIsValid()可用于所有UI元素.如果存在对象,则返回true.
如果元素无效或将返回[对象UIAButton]或[对象UIaimage],toString()将返回[object UIAElementNil].

还要尝试使用Apple文档:
http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...