2016-03-10 132 views
2

我遇到了一些障碍,试图编写一个使用后退按钮的测试,希望有人可以用这个指向正确的方向。使用EarlGrey按导航栏上的后退按钮

我的看法是相当标准的我有一个UINavigation控制器作为我的根视图控制器,我正在通过它到一个点,然后需要回去。

我试图做一个匹配器,找到导航栏中的后退按钮,但没有任何成功。 我试图使用标签,标识和值,设置后面的按钮项目上的辅助功能标识符没有导致匹配,即使它适用于我的其他界面元素。

[self.navigationItem.backBarButtonItem setAccessibilityIdentifier:@"Back"]; 
在我的测试

我有以下几点:

// Press the back button 

id<GREYMatcher> backMatcher = 
    grey_allOf(grey_accessibilityID(@"Back"), grey_sufficientlyVisible(), nil); 

[[EarlGrey selectElementWithMatcher:backMatcher] performAction:grey_tap()]; 

我用的断点和PO进一步深入研究,发现后退按钮的accessibilityLabel确实设置为@“后退”,但它确实不符合下面的代码。

// Press the back button 

id<GREYMatcher> backMatcher = 
    grey_allOf(grey_accessibilityID(@"Back"), grey_sufficientlyVisible(), nil); 

[[EarlGrey selectElementWithMatcher:backMatcher] performAction:grey_tap()]; 

回答

1

的问题是,你需要一个更具体的匹配从UINavigationController得到Back按钮。如果您查看在测试失败时被转储的UI层次结构,您会注意到多个元素的可访问性标签Back。所以,你需要缩小使用grey_accessibilityTrait匹配,像这样的搜索有点多:

id<GREYMatcher> matcherForBackButton = 
    grey_allOf(grey_accessibilityLabel(@"Back"), 
       grey_accessibilityTrait(UIAccessibilityTraitButton), 
       nil); 

[[EarlGrey selectElementWithMatcher:matcherForBackButton] 
    performAction:grey_tap()]; 
+2

我用:'[EarlGrey selectElementWithMatcher:grey_buttonTitle(@“返回”);' –