[英]How to clear field using nightwatch framework?
我正在尝试使用不同的方式清除输入字段:
我有以下代码对我有用
.setValue('field, [
browser.Keys.CONTROL,
"a",
browser.Keys.DELETE,
])
您是否尝试清除值,设置空值? 像这样
.setValue('field', '')
您是否尝试过使用 Webriver-Key 命令删除输入?
在我的项目中,我这样做:
for (let i = 0; i < amountChars; i++) {
browser.keys(WEBDRIVER_KEYS['Backspace']);
}
WEBDRIVER_KEYS 是 spectron-keys npm 包的一部分。
我做了一个这样的自定义命令:
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')
我今天真的很受这个问题的困扰,所以我分享了我的解决方案,因为其他解决方案都不适用于 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 做另一件事的命令
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.