浓咖啡
目前无法使用 react-native 设置资源 ID,因此,要进行复杂的操作,您需要编写一些代码(例如等待元素),其他事情似乎通过 android studio 'record espresso test' 按钮工作得很好。
- 使用 prop
accessibilityLabel
作为元素的 id(例如“elementId”)
- 用于
onView(allOf(withContentDescription("elementId"), isDisplayed()))
获取元素
- 对该元素执行操作(如
element.perform(click())
)
在这里你可以找到完整的测试https://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa
Appium
如果您只想执行操作并捕获屏幕截图,您可以使用 appium 执行此操作:
- 使用 prop
accessibilityLabel
作为元素的 id
- 在网络驱动程序中使用 waitForElementByAccessibilityId
- 使用 saveScreenshot('out.png') 捕获屏幕截图 -> 这将在您运行测试的目录中创建“out.png”文件
在 appium 中,您最终将拥有类似(js 示例)的内容:
driver.waitForElementByAccessibilityId('searchInputAcc', 5000)
.type('bold\n')
.sleep(5000)
.saveScreenshot('out.png')
iOS 与 Android 可访问性标签
似乎对于 Android,您可以accessibiltyLabel
在任何元素(如文本、视图等)上自由使用,但 iOS 不会在所有元素(如 Adnroid)上设置可访问性。
如果您在Text
其上设置标签将不等于您的标签
<Text accessibilityLabel="my_text">content</Text>
在 iOS 上会给你相同的标签content
,所以基本上你可以accessible
在这个平台的文本节点上设置属性
<Text accessible>content</Text>
同样的事情View
- iOS 会忽略你的标签。
到目前为止,iOS 上没有多少元素可以与您的自定义辅助功能标签一起使用。
以下是可用于测试应用程序以进行跨平台 react-native 测试的元素列表
您可以使用:
TouchableHighlight
- 将在 iOS 和 Android 上工作相同,你可以设置accessibilityLabel
Text
-accessibilityLabel 应与内部测试相同 + 您必须设置可访问属性
不起作用(完全适用于两个平台):
PS我们还没有测试所有可能的元素,所以为其他元素添加你的结果或等待我们的结果
调试
您可以获取根元素的来源,将其打印并作为 xml 读取以进行调试(对于 webdriver.io:http://webdriver.io/api/property/getSource.html)