2

我正在尝试使用不同的方式清除输入字段:

  1. clearValue() - 不起作用
  2. 发送一些组合确定键 - 不起作用
4

7 回答 7

1

我有以下代码对我有用

.setValue('field, [
    browser.Keys.CONTROL,
    "a",
    browser.Keys.DELETE,
  ])
于 2020-12-02T13:01:51.727 回答
0

我做了一个这样的自定义命令:

 this.waitForElementVisible(fieldSelector)
        .execute(
            function (fieldSelector) {
                const field = document.querySelector(fieldSelector);
                field.value = null;
            },
            [fieldSelector]
        );

然后在测试文件中我只是这样称呼它:

browser.clearField(fieldSelector)
于 2020-12-17T19:45:00.290 回答
0

您是否尝试过清除值,设置空值?像这样

.setValue('field', '')
于 2019-08-15T04:59:06.073 回答
0
browser.clearValue('yourTargetFieldSelector')

因此,如果使用 Page 对象:

yourPageObjectInstance.clearValue('@yourTargetFieldSelector')
于 2021-04-30T00:12:20.907 回答
0

您是否尝试过使用 Webriver-Key 命令删除输入?

在我的项目中,我这样做:

for (let i = 0; i < amountChars; i++) {
            browser.keys(WEBDRIVER_KEYS['Backspace']);
        }

WEBDRIVER_KEYS 是 spectron-keys npm 包的一部分。

于 2019-08-15T05:37:25.550 回答
0

对我来说,这就像一个魅力:

browser.getValue('css selector', '#id', (textValue) => {
        for(let i = 0; i < textValue.value.length; i ++) {
            this.setValue('#id', '\u0008'); 
        }
});

不得不想出这种解决方案,因为任何提供的解决方案都不适合我。

于 2021-04-01T13:55:12.273 回答
0

我今天真的很痛苦,所以我分享了我的解决方案,因为其他解决方案都不适用于 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 做另一件事的命令

于 2021-08-15T11:18:43.907 回答