Как очистить поле, используя рамки Nightwatch?
Я пытаюсь очистить поле ввода разными способами:
- clearValue () - не работает
- отправить комбинацию клавиш ОК - не работает
7 ответов
Вы пытались удалить ввод с помощью клавиш Webriver-Key?
В моем проекте я делаю это так:
for (let i = 0; i < amountChars; i++) {
browser.keys(WEBDRIVER_KEYS['Backspace']);
}
WEBDRIVER_KEYS является частью пакета Spectron-ключей npm.
У меня есть следующий код, который сработал для меня
.setValue('field, [
browser.Keys.CONTROL,
"a",
browser.Keys.DELETE,
])
Вы пытались очистить значение, установив пустое значение? Нравится
.setValue('field', '')
Для меня это работает как шарм:
browser.getValue('css selector', '#id', (textValue) => {
for(let i = 0; i < textValue.value.length; i ++) {
this.setValue('#id', '\u0008');
}
});
Пришлось придумать такое решение, так как ни одно из предоставленных мне не сработало.
Я сделал такую команду:
this.waitForElementVisible(fieldSelector)
.execute(
function (fieldSelector) {
const field = document.querySelector(fieldSelector);
field.value = null;
},
[fieldSelector]
);
А затем в тестовом файле я просто называю это так:
browser.clearField(fieldSelector)
browser.clearValue('yourTargetFieldSelector')
Итак, в случае использования объекта Page:
yourPageObjectInstance.clearValue('@yourTargetFieldSelector')
Сегодня я действительно пострадал с этим, поэтому я поделюсь своим решением, поскольку ни одно из других решений не помогло мне для chrome и firefox:
exports.command = function (fieldSelector) {
const browserName = this.options.desiredCapabilities.browserName;
if (browserName === 'chrome') {
this.getValue(fieldSelector, function (result) {
this.setValue(fieldSelector, [...(result.value || '')].map(char => '\u0008'));
});
} else {
this.clearValue(fieldSelector);
}
return this;
};
Это команда, которая выполняет одно действие для Chrome, а другое - для firefox.