Как очистить поле, используя рамки Nightwatch?

Я пытаюсь очистить поле ввода разными способами:

  1. clearValue () - не работает
  2. отправить комбинацию клавиш ОК - не работает

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.

Другие вопросы по тегам