在 React Native 中使用 Detox 测试 Picker

ota*_*iao 5 react-native detox

我刚刚开始使用 Detox 来测试我的 React Native 应用程序,但在测试 Pickers 时遇到了一些麻烦。我基本上需要能够从选择器中选择一个值!但这似乎不可能!

这是我的选择器:

<Picker
        style={styles.picker}
        itemStyle={styles.pickerItem}
        testID="picker"
        selectedValue={selectedValue}
        onValueChange={this.updateValue}
      >
        <Picker.Item key={0} label="Choose one" value={null} />

        {values.map(value => {
          return (
            <Picker.Item
              key={value}
              label={value}
              value={value}
              testID={value}
            />
          );
        })}
 </Picker>
Run Code Online (Sandbox Code Playgroud)

这是我的测试:

await element(by.type("UIPickerView")).setColumnToValue(0, "Apple");
Run Code Online (Sandbox Code Playgroud)

但我得到的只是一条错误消息,指出无法设置该值,因为它不存在,但它确实存在!因为我现在正在看它!

有谁知道在选择器中设置值的正确方法?

任何帮助都会很棒!

Tha*_*P A 0

请尝试以下适用的功能react-native-picker-select

const selectPicker = async (text, index = 0, column = 0) => {
  if (device.getPlatform() === 'ios') {
    await element(by.id('ios_touchable_wrapper')).atIndex(index).tap();
    await element(by.id('ios_picker')).setColumnToValue(column, text);
    await element(by.id('done_button')).tap();
  } else {
    await element(by.id('android_picker_headless')).atIndex(index).tap();
    await element(by.text(text)).tap();
  }
};
Run Code Online (Sandbox Code Playgroud)

注意:即使同一屏幕中有多个选择器,只需将选择器的顺序作为index值传递,它也会起作用