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

Seb*_*mba 9 ios ios-ui-automation

我们有一个iPad应用程序,其中包括一个双列新闻阅读器.左侧视图包含新闻列表,其中一些链接直接链接到新闻,另一些推送另一个视图控制器与另一个新闻列表.这也将导致a UIButton被设置为leftBarButtonItem导航栏的.如果我们处于第一级,那么无法点击的简单图像就是leftBarButtonItem.

我的目标是现在有一个测试,可以在第一级获取每个新闻.如果新闻指向第二级列表,则应点击UIButton导航栏中的.

如果leftBarButtonItem"tappable" ,我怎么检查?由于它可以是图像按钮,navigationBar().leftButton().tap()如果它是图像,只是调用会导致错误.

我也在使用调整库,如果有任何帮助的话.

小智 17

几乎UIAutomation中的所有元素都可以被挖掘.它是图像,视图还是按钮无关紧要.如果您尝试点击的对象无效,您将收到错误消息.如何检查:

if ( navigationBar().leftButton().checkIsValid() )
{
     navigationBar().leftButton().tap();
}
else
{
     //do what you need.
}
Run Code Online (Sandbox Code Playgroud)

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

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

checkIsValid()适用于所有UI元素.如果对象存在,它将返回true. 的toString()将返回[对象UIAElementNil]如果元件是无效或将返回[对象UIAButton][对象UIAImage] .

也可以尝试使用苹果的文档: http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Reference/UIAElementClassReference/UIAElement/UIAElement.html