React Native 如何goBack屏幕在测试与排毒

7gcisfzg  于 2023-11-21  发布在  React
关注(0)|答案(6)|浏览(152)

我做自动化React本地测试与排毒,它有下一个屏幕序列A -> B -> C,我希望回到屏幕B <- C.有解决方案吗?

ncgqoxb0

ncgqoxb01#

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

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

字符串

  • Android:device.pressBack()
  • iOS:返回最后一个屏幕#828
v64noz0r

v64noz0r2#

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

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

字符串

mhd8tkvw

mhd8tkvw3#

有时

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

eqqqjvef

eqqqjvef4#

解决方案是使用traits按钮,如下所示:
wait(by.traits(“button”])).atIndex(0).tap();

djp7away

djp7away5#

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

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

字符串
对于[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)[[email protected]](https://stackoverflow.com/cdn-cgi/l/email-protection)中的iOS,您可以用途:

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

mrphzbgm

mrphzbgm6#

另一种可行的方法是

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

字符串
这使用了内置的testID,即react-navigation v5附带的默认返回按钮。您可能需要修改atIndex()编号,因为对我来说,它似乎匹配2个返回按钮,但第一个是我正在寻找的按钮。

相关问题