React Native 有没有办法在Android上使用Detox在Picker中选择一个项目?

camsedfj  于 2023-01-18  发布在  React
关注(0)|答案(2)|浏览(136)

根据docs,选择值的方法仅适用于IOS。对于Android,是否有任何建议的解决方案?

tcomlyy6

tcomlyy61#

await waitFor(element(by.id('android_touchable_wrapper'))).toBeVisible()

await element(by.id('android_picker_headless').withAncestor(by.id('android_touchable_wrapper'))).atIndex(0).tap()

await element(by.text('Picker Value Dropdown 1')).tap()
ruoxqz4g

ruoxqz4g2#

我在选择器中添加了一个testID字段:

<Picker testID='test-picker'>
  ...
</Picker>

然后按如下方式处理选择:

if (global.device.getPlatform() === 'ios') {
  await element(by.id('test-picker')).setColumnToValue(0, 'First item');
} else {
  // Android
  await element(by.id('test-picker')).tap();
  await element(by.text('First item')).tap()
}

您可以创建一个可重用的函数来处理这个问题:

const selectPicker = async (pickerId, text, value = 0) => {
  if (global.device.getPlatform() === 'ios') {
    await element(by.id(pickerId)).setColumnToValue(value, text);
  } else {
    // Android
    await element(by.id(pickerId)).tap();
    await element(by.text(text)).tap();
  }
}

然后在需要时引用它:

await selectPicker('test-picker', 'First item', 0);

相关问题