我正在使用react native的alert .

我如何让排毒者按下alert 信息上的"注销"按钮?

enter image description here

我试着用await element(by.text('Log out')).tap();

但我得到了"多元素匹配"的错误.大概它找到了3个标签相同的元素.标签为"Log out"的原始按钮用于触发alert 消息、alert 消息标题和我希望解毒按下的alert 消息按钮.

Error Trace: [
  {
    "Description" : "Multiple elements were matched: (
    "<UILabel:0x7fe7964db910; AX=Y; AX.label='Log out'; AX.frame={{41, 234}, {238, 20.5}}; AX.activationPoint={160, 244.25}; AX.traits='UIAccessibilityTraitStaticText'; AX.focused='N'; frame={{16, 20}, {238, 20.5}}; opaque; alpha=1; UIE=N; text='Log out'>",
    "<UILabel:0x7fe7964dda90; AX=Y; AX.label='Log out'; AX.frame={{198.5, 322.5}, {58, 20.5}}; AX.activationPoint={227.5, 332.75}; AX.traits='UIAccessibilityTraitStaticText'; AX.focused='N'; frame={{0, 12}, {58, 20.5}}; opaque; alpha=1; UIE=N; text='Log out'>",
    "<RCTText:0x7fe79652f300; AX=Y; AX.label='Log out'; AX.frame={{16, 338.5}, {288, 17}}; AX.activationPoint={160, 347}; AX.traits='UIAccessibilityTraitStaticText'; AX.focused='N'; frame={{0, 0}, {288, 17}}; alpha=1>"
). Please use selection matchers to narrow the selection down to single element.",
    "Error Domain" : "com.google.earlgrey.ElementInteractionErrorDomain",
    "Error Code" : "5",
    "File Name" : "GREYElementInteraction.m",
    "Function Name" : "-[GREYElementInteraction grey_errorForMultipleMatchingElements:withMatchedElementsIndexOutOfBounds:]",
    "Line" : "956"
  }
]

我想一种方法是使用.atIndex(),但这意味着每次发生变化时我都需要使用索引来确定正确的元素.

没有更好的方法来解决这个问题吗?

谢谢

推荐答案

经过一番修补,我最终使用了这个:

await element(by.label('Log out').and(by.type('_UIAlertControllerActionView'))).tap();

不确定这是否适用于每个iOS版本,但似乎适用于10.3和11.1

使用Xcode提供的View Hierarchy Debugger查看不同版本的iOS的类型是否已更改.

React-native相关问答推荐

出现错误:使用 process(css).then(cb) 来使用异步插件

react-native 签名 [AppName]Tests 需要开发团队 ios

如何将谷歌反向地理编码与 React Native Expo 结合使用?

如何使用 AsyncStorage React Native 缓存 API 数据

React-Native:Facebook 和 Google 登录

React Native this.'function' 不是函数

如何使用 React Navigation 使 TabNavigator 按钮推送模态屏幕

React Native 有全局作用scope域吗?如果没有,我该如何模仿它?

从组件的 style属性中获取 CSS 属性值

如何从 stack.navigation 外部的组件中使用 navigation.navigate

我可以将标题传递给图像源吗?

Android 依赖 'com.google.android.gms:play-services-stats' 的编译(16.0.1)和运行时(17.0.0)类路径有不同的版本

TypeError : props.navigation.getParam 不是函数. In(props.navigation.getParam('name')

将 React Native 升级到 0.60-RC2 后找不到库libjsc.so

React Native 将状态中的数组值应用为 Picker 项

如何在本地构建 Expo APK

KeyboardAvoidingView - 隐藏键盘时重置高度

使用 typescript react-native - 如何使用来自 @react-navigation/native 的 useRoute 和 typescript

React Navigation 切换背景 colored颜色 和样式 StackNavigator

React Native 中的 CSS 三角形