React Native + Appium iOS elementByAccesibilityId.text()

一曲冷凌霜 提交于 2019-12-10 10:42:07

问题


I'm writing tests for React Native using Appium + Jest for both Android and iOS.

Here's my React Native element:

<Text accessibilityLabel={'emailError'}>Invalid email</Text>

Here's the Promise chain I created to extract the value of a React Native Text element:

driver.elementByAccessibilityId('emailError')
      .then(error => error.text())
      .then(errorText => expect(errorText).toBe('Invalid email'))

On Android, this test passes. On iOS, this test fails, and errorText === 'emailError'.

Why is this, and is there a solution that works cross-platform for extracting text?


回答1:


I had the same issue. Using testID instead of accessibilityLabel worked for me on iOS. For Android, accessible: true and accessibilityLabel should do the trick. But: You can't just set them all. If accessibilityLabel and testID are both set, it won't work on iOS anymore.

Example for iOS:

<Text testID={'emailError'}>Invalid email</Text>

Example for Android:

<Text accessible={true} accessibilityLabel={'emailError'}>Invalid email</Text>

A library (or just create your own function) like https://github.com/tipsi/react-native-testid can help you with setting the correct attributes based on the platform.



来源:https://stackoverflow.com/questions/51642256/react-native-appium-ios-elementbyaccesibilityid-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!