2012-07-08 130 views
9

我们有一个包含两列新闻阅读器的iPad应用程序。左视图包含新闻列表,其中一些链接直接与新闻相关联,另一些则将另一个视图控制器与另一个新闻列表链接。这也会导致UIButton被设置为导航栏的leftBarButtonItem。如果我们处于第一级别,则无法使用的简单图像将是leftBarButtonItemUIAutomation:在点击前检查元素是否存在

我的目标是现在有一个测试,在每个新闻的水平。如果一条消息通向二级列表,则应该点击导航栏中的UIButton

我该如何检查,如果leftBarButtonItem是“可点击”?由于它可以是图像,只要调用navigationBar().leftButton().tap()就会导致错误,如果它是图像。

我也使用tuneup库,如果这是任何帮助。

回答

17

几乎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的toString()将返回[对象UIAElementNil]如果元件是无效或将返回[对象UIAButton][对象UIAImage]

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

0

您可以简单地使用

if (navigationBar().leftButton().exists) 
{ 
    navigationBar().leftButton().tap(); 
} 
else 
{ 
    //do what you need. 
}