エスプレッソ
現在、react-native で resource-id を設定する方法がないため、複雑なアクションを作成するには (要素の待機など) コードを記述する必要がありますが、Android Studio の [エスプレッソ テストの記録] ボタンを使用すると、他のことがうまく機能するようです。
- 要素の ID としてprop
accessibilityLabel
を使用します (例: "elementId")
onView(allOf(withContentDescription("elementId"), isDisplayed()))
要素を取得するために使用
- その要素に対してアクションを実行します(のように
element.perform(click())
)
ここで完全なテストを見つけることができますhttps://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa
アピウム
アクションを実行してスクリーンショットをキャプチャするだけの場合は、appium を使用してこれを行うことができます。
accessibilityLabel
要素の ID としてprop を使用する
- Web ドライバーでは、waitForElementByAccessibilityId を使用します
- saveScreenshot('out.png') でスクリーンショットをキャプチャします -> これにより、テストを実行したディレクトリに「out.png」ファイルが作成されます
appium では、最終的に次のようなものになります (js の例):
driver.waitForElementByAccessibilityId('searchInputAcc', 5000)
.type('bold\n')
.sleep(5000)
.saveScreenshot('out.png')
iOS と Android のアクセシビリティ ラベル
AndroidaccessibiltyLabel
では任意の要素 (Text、View など) で自由に使用できるようですが、iOS では Adnroid のようなすべての要素でアクセシビリティが設定されるわけではありません。
ラベルを設定Text
すると、ラベルと同じにはなりません
<Text accessibilityLabel="my_text">content</Text>
content
iOS では同じラベルが付けられるため、基本的にはaccessible
、このプラットフォームのテキスト ノードに属性を設定するだけで済みます。
<Text accessible>content</Text>
同じことView
- iOS はラベルを無視します。
これまでのところ、カスタムのアクセシビリティ ラベルで動作する iOS の要素はほとんどありません。
以下は、クロスプラットフォームの反応ネイティブ テストのアプリケーションをテストするために使用できる要素のリストです。
以下を使用できます。
TouchableHighlight
- iOS と Android で同じように動作します。accessibilityLabel を設定するだけです
Text
- accessibilityLabel は内部テストと同じでなければならない + アクセシブル属性を設定する必要がある
動作しません (両方のプラットフォームで完全に):
PS まだすべての可能な要素をテストしていないので、他の要素の結果を追加するか、結果を待ちます
デバッグ
ルート要素のソースを取得し、印刷して、デバッグ目的で xml として読み取ることができます (webdriver.io の場合: http://webdriver.io/api/property/getSource.html ) 。