Детокс - Нажмите кнопку, когда она станет активной
У меня проблема с выполнением нажатия () на кнопку при тестировании с помощью Detox.
<Button style={this._loginButtonDisabled() ? {} : styles.loginButtonActive}
disabled={this._loginButtonDisabled()}
onPress={this.logInClick}
testID='logInButton'>
<Text style={styles.loginButtonText}>Log In</Text>
</Button>
Наш тест выглядит так:
const emailInput = element(by.id('emailInput'));
await emailInput.replaceText('idontexist@myeatclub.com');
const passwordInput = element(by.id('passwordInput'));
await passwordInput.replaceText('password');
await element(by.id('logInButton')).tap();
Кнопка видна все время, но становится активной ("нажимаемой") только после ввода текста в полях формы. Таким образом, приведенный выше код касается кнопки, прежде чем она будет включена, в результате чего никаких реальных действий не произойдет. Что я хотел бы сделать, это подождать, пока кнопка не будет включена, а затем выполнить нажатие.
Каков предлагаемый способ обработки этого типа сценария? Я не смог найти хороших примеров в документации.
1 ответ
Решение
Я думаю, это потому, что вы используете replaceText
Вместо этого попробуйте использовать typeText
Как это:
const emailInput = element(by.id('emailInput'));
await emailInput.replaceText('idontexist@myeatclub.com');
const passwordInput = element(by.id('passwordInput'));
// \n is used to press the return key on keyboard
await passwordInput.typeText('password\n');
await element(by.id('logInButton')).tap();