如何在GoBack屏幕上进行排毒测试

时间:2018-07-12 15:45:00

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

我使自动化排毒进行本机测试,它具有下一个屏幕序列A -> B -> C,我希望回到屏幕{{1} } 有解决方案吗?

6 个答案:

答案 0 :(得分:1)

后退按钮上有一个testId,因此您可以执行以下操作:

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

答案 1 :(得分:1)

您可以继续创建实用程序

//dict

答案 2 :(得分:1)

如果您使用的是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'));

答案 3 :(得分:0)

解决方案是使用traits按钮,如下所示:

await元素(by.traits(['button']))。atIndex(0).tap();

答案 4 :(得分:0)

有时

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);

答案 5 :(得分:0)

另一种可行的方法是

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

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