Детокс - Нажмите кнопку, когда она станет активной

У меня проблема с выполнением нажатия () на кнопку при тестировании с помощью 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();
Другие вопросы по тегам