2016-03-10 176 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(@「返回」);' –