4

戻るボタンを使用するテストを作成しようとして、少し問題が発生しました。うまくいけば、誰かがこれで正しい方向に向けることができます。

私のビューは非常に標準的で、ルート ビュー コントローラーとして UINavigation コントローラーがあり、それをポイントまでプッシュしてから戻る必要があります。

ナビゲーション バーの [戻る] ボタンを見つけるマッチャーを作成しようとしましたが、成功しませんでした。ラベル、ID、および値を使用しようとしましたが、戻るボタン項目にアクセシビリティ識別子を設定しても、他のインターフェイス要素では機能しますが、一致しませんでした。

[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 が実際に @"Back" に設定されていることがわかりましたが、次のコードとも一致しません。

// Press the back button

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

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

2 に答える 2

2

Back問題は、からボタンを取得するには、より具体的なマッチャーが必要なことですUINavigationController。テストが失敗したときにダンプされる ui 階層を見ると、複数の要素にアクセシビリティ ラベルが付いていることがわかりますBackgrey_accessibilityTraitしたがって、次のようにマッチャーを使用して、検索をもう少し絞り込む必要があります。

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

[[EarlGrey selectElementWithMatcher:matcherForBackButton]
    performAction:grey_tap()];
于 2016-03-11T03:12:39.530 に答える