Я использую реагирующее средство выбора и вижу, что весь код написан на родном языке (Java для Android и Objective C для iOS).
Для автоматизации тестирования нам нужен этот элемент управления, чтобы иметь реквизиты accessibilityLabel и testId, которые недоступны. Infact фокус идет на средства управления за ним. Я использовал сборщик реакционной смеси.
Любая помощь высоко ценится.
Ниже мой код в реагирующе-родном
renderBillingStatePicker() {
var stateVal = [];
billingStateCodes = stateData.values;
stateVal = this.getStateValueArray(billingStateCodes);
Picker.hide();
Picker.init({
pickerTitleText: '',
pickerConfirmBtnText: 'Next',
pickerCancelBtnText: '',
pickerBg: [255, 255, 255, 1],
accessibilityLabel:'guestcheckout_picker_state',
testID:'guestcheckout_picker_state',
pickerData: stateVal,
selectedValue: [stateVal[indexBillingState]],
pickerFontSize: (Platform.OS === 'ios') ? 18 : 15,
pickerToolBarFontSize: (Platform.OS === 'ios') ? 18 : 15,
pickerTextEllipsisLen: 14,
pickerBtnStyle: { margin: 10 },
pickerToolBarStyle: { height: 20, paddinBottom: 5 },
onPickerConfirm: text => {
if (!this.isValidString(this.state.billingState)) {
let itemValue = this.getBillingItemValueOfState(billingStateCodes, stateVal[0]);
this.setState({
billingState: itemValue,
})
}
this.refs.State.changeText();
this.refs.billingZipCde.focus();
},
onPickerCancel: stateVal => {
Picker.hide();
this.refs.State.changeText();
},
onPickerSelect: selectedText => {
let itemValue = this.getBillingItemValueOfState(billingStateCodes, selectedText);
this.setState({
billingState: itemValue
})
this.refs.State.changeText();
}
});
Picker.show();
if (Platform.OS === 'android') {
this.setState({
scrollViewHeight: 180
})
}
}