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

时间:2012-07-08 15:04:59

标签: ios ios-ui-automation

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

我现在的目标是进行测试,以便在第一级抓取每条新闻。如果新闻指向第二级列表,则应点按导航栏中的UIButton

如果leftBarButtonItem是“可点击的”,我如何查看?由于它可以是一个图像一个按钮,如果它是图像,只需调用navigationBar().leftButton().tap()就会导致错误。

如果有任何帮助,我也会使用调整库。

2 个答案:

答案 0 :(得分: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 。 如果元素无效或将返回 [object UIAButton] [object UIAImage] < toString()将返回 [object UIAElementNil] / em>的

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

答案 1 :(得分:0)

您只需使用

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