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

У меня возникла проблема с выполнением нажатия() на кнопку при тестировании с 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('[email protected]');

const passwordInput = element(by.id('passwordInput'));
await passwordInput.replaceText('password');

await element(by.id('logInButton')).tap();

Кнопка видна все время, но становится активной («нажимаемой») только после ввода текста в поля формы. Таким образом, приведенный выше код нажимает кнопку до того, как она активируется, что не приводит к реальным действиям. То, что я хотел бы сделать, это подождать, пока кнопка не будет включена, а затем выполнить кран.

Каков предлагаемый способ обработки этого типа сценария? Я не смог найти хороших примеров в документах.


person Magda    schedule 17.01.2018    source источник


Ответы (1)


Я думаю, это потому, что вы используете replaceText

Вместо этого попробуйте использовать typeText.

Как это:

const emailInput = element(by.id('emailInput'));
await emailInput.replaceText('[email protected]');

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();
person Antoni4    schedule 23.01.2018
comment
Спасибо, да, вроде работает! С другой стороны, симулятор в течение длительного времени (используя CMD + H в любой момент), похоже, вызывает проблемы с включением программной клавиатуры, а затем typeText() просто неоднократно терпит неудачу. У меня была эта проблема раньше, и поэтому я изначально использовал replaceText. - person Magda; 26.01.2018