2015-12-14 9 views
5

アップルのUIテストフレームワークに関する適切なドキュメントを見つけることは難しいです。特定の名前のボタンやラベルを見つけることができる多くの例を見てきましたが、どのように一般的なUIViewを探すことができますか?XCUIElementsQueryを使用してUIViewの存在をテストするにはどうすればよいですか?

例えば、accessibilityLabel == "Some View"でビューを設定すると、テスト実行中にその名前のビューを見つけるにはどうすればよいですか?

私は(失敗した)次のコードを試してみました:私はあなたが上記の持っているコードで参照の問題は、あなたが特にアプリの子供の視野を見つけようとしているということです

XCUIElement *pvc = [[app childrenMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View'"]]; 

NSPredicate *exists = [NSPredicate predicateWithFormat:@"exists == true"]; 
[self expectationForPredicate:exists evaluatedWithObject:pvc handler:nil]; 
[self waitForExpectationsWithTimeout:10 handler:nil]; 

NSLog(@"%@", [[app childrenMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View Controller'"]]); 

答えて

5

、代わりにアプリの子孫。子供は厳密にビューのサブビューであり、サブサブビューなどは検索されません。それ以外の場合は正常です。

試してみてください。

XCUIElement *pvc = [[app descendantsMatchingType:XCUIElementTypeAny] elementMatchingPredicate:[NSPredicate predicateWithFormat:@"accessibilityLabel == 'Places View'"]]; 

また、UIViewのデフォルトはとてもラベルを設定する(そしてついでにラベルの設定に関するご質問のコードスニペットがやっていることに加えて、全くのアクセシビリティに参加しないことです代わりに、割り当ての比較)また、あなたは、アクセシビリティを有効に確認してください:

view.isAccessibilityElement = YES 
view.accessibilityLabel = @"AccessibilityLabel" 
+0

私は子供を探すのが間違いです。残念ながら、子孫を検索してもうまくいきませんでした...私は大きなタイムアウトを設定しようとしましたが、Xcodeはそのアクセシビリティラベルでビューを見つけられませんでした。 –

+0

アクセシビリティインスペクタを使用している場合、検索しようとしているビューを選択できますか?ラベルを設定するだけでなく、アクセシビリティが有効になっていることを確認する必要があります。デフォルトでは、UIViewはアクセシビリティのために有効になっていないと思います。 –

1

他の回答の作品からの問い合わせが、私はあなたにも簡単にとの意見を見つけることができますを見つける:

app.otherElements["MenuViewController.menuView"].swipeLeft() 

私の場合にはMenuViewController.menuViewaccessibilityIdentifierセットでUIViewです。

関連する問題