如何使用守夜人框架清除字段?
How to clear field using nightwatch framework?
我正在尝试使用不同的方式清除输入字段:
- clearValue() - 不起作用
- 发送一些组合 ok 键 - 不起作用
您是否尝试过清除值,设置空值?
像这样
.setValue('field', '')
您是否尝试过使用 Webriver-Key 命令删除输入?
在我的项目中,我是这样做的:
for (let i = 0; i < amountChars; i++) {
browser.keys(WEBDRIVER_KEYS['Backspace']);
}
WEBDRIVER_KEYS 是 spectron-keys npm 包的一部分。
我有以下对我有用的代码
.setValue('field, [
browser.Keys.CONTROL,
"a",
browser.Keys.DELETE,
])
我创建了这样的自定义命令:
this.waitForElementVisible(fieldSelector)
.execute(
function (fieldSelector) {
const field = document.querySelector(fieldSelector);
field.value = null;
},
[fieldSelector]
);
然后在测试文件中我这样称呼它:
browser.clearField(fieldSelector)
对我来说,这很有魅力:
browser.getValue('css selector', '#id', (textValue) => {
for(let i = 0; i < textValue.value.length; i ++) {
this.setValue('#id', '\u0008');
}
});
不得不想出这种解决方案,因为提供的任何解决方案都不适合我。
browser.clearValue('yourTargetFieldSelector')
所以如果使用 Page 对象:
yourPageObjectInstance.clearValue('@yourTargetFieldSelector')
我今天真的很受这个问题的困扰,所以我分享了我的解决方案,因为 none 的其他解决方案适用于 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
做另一件事
我正在尝试使用不同的方式清除输入字段:
- clearValue() - 不起作用
- 发送一些组合 ok 键 - 不起作用
您是否尝试过清除值,设置空值? 像这样
.setValue('field', '')
您是否尝试过使用 Webriver-Key 命令删除输入?
在我的项目中,我是这样做的:
for (let i = 0; i < amountChars; i++) {
browser.keys(WEBDRIVER_KEYS['Backspace']);
}
WEBDRIVER_KEYS 是 spectron-keys npm 包的一部分。
我有以下对我有用的代码
.setValue('field, [
browser.Keys.CONTROL,
"a",
browser.Keys.DELETE,
])
我创建了这样的自定义命令:
this.waitForElementVisible(fieldSelector)
.execute(
function (fieldSelector) {
const field = document.querySelector(fieldSelector);
field.value = null;
},
[fieldSelector]
);
然后在测试文件中我这样称呼它:
browser.clearField(fieldSelector)
对我来说,这很有魅力:
browser.getValue('css selector', '#id', (textValue) => {
for(let i = 0; i < textValue.value.length; i ++) {
this.setValue('#id', '\u0008');
}
});
不得不想出这种解决方案,因为提供的任何解决方案都不适合我。
browser.clearValue('yourTargetFieldSelector')
所以如果使用 Page 对象:
yourPageObjectInstance.clearValue('@yourTargetFieldSelector')
我今天真的很受这个问题的困扰,所以我分享了我的解决方案,因为 none 的其他解决方案适用于 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
做另一件事