【问题标题】:How goBack screen in test with detox如何在排毒测试中返回屏幕
【发布时间】:2018-12-20 22:19:27
【问题描述】:

我让 自动化detox 反应原生测试,它有下一个屏幕序列 A -> B -> C 我希望回到屏幕 B <- C. 有解决办法吗?

【问题讨论】:

    标签: react-native automated-tests react-navigation react-native-navigation detox


    【解决方案1】:

    后退按钮上有一个testId,所以你可以这样做:

      await element(by.id("header-back")).tap();
    

    【讨论】:

    • 这在以下环境中对我有用:Xcode: 11.5 react-native: 0.61.5 "detox": "^16.8.2",
    【解决方案2】:

    有时

    await element(by.id("header-back")).tap();
    

    不工作而且

    await element(by.traits(['button']))
      .atIndex(0)
      .tap();
    

    选择另一个按钮。在这种情况下,假设它是堆栈导航器,您可以尝试在 ios 上使用向右滑动。使用外部容器视图

    await element(by.id('containerView')).swipe('right', 'fast', 0.1);
    

    【讨论】:

      【解决方案3】:

      解决方案是按如下方式使用特征按钮:

      等待元素(by.traits(['button'])).atIndex(0).tap();

      【讨论】:

        【解决方案4】:

        你可以继续创建一个实用程序

        export const pressBack = async () => {
          if (device.getPlatform() === 'android') {
            await device.pressBack(); // Android only
          } else {
            await element(by.traits(['button']))
              .atIndex(0)
              .tap();
          }
        };
        

        【讨论】:

          【解决方案5】:

          如果您使用的是react-native-navigation,您可以使用:

          const backButton = () => {
            if (device.getPlatform() === 'ios') {
              return element(by.type('_UIBackButtonContainerView'));
            } else {
              return element(by.label('Navigate Up'));
            }
          };
          ...
          await backButton().tap();
          

          对于 detox@17.3.6react-native-navigation@6.10.1 中的 iOS,您可以使用:

          return element(by.id('pop'));
          

          【讨论】:

            【解决方案6】:

            另一种可行的方法是

            await element(by.id('header-back')).atIndex(0).tap()
            

            这使用了内置的 testID,即 react-navigation v5 附带的默认后退按钮。您可能需要弄乱 atIndex() 数字,因为对我来说它似乎匹配 2 个后退按钮,但第一个是我正在寻找的那个。

            【讨论】:

              猜你喜欢
              • 2020-12-23
              • 2018-04-30
              • 2018-05-13
              • 2021-11-08
              • 2019-06-23
              • 2020-03-16
              • 2018-04-20
              • 2019-02-06
              • 2018-10-10
              相关资源
              最近更新 更多