我正在尝试使用不同的方式清除输入字段:
- clearValue() - 不起作用
- 发送一些组合确定键 - 不起作用
我有以下代码对我有用
.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)
您是否尝试过清除值,设置空值?像这样
.setValue('field', '')
browser.clearValue('yourTargetFieldSelector')
因此,如果使用 Page 对象:
yourPageObjectInstance.clearValue('@yourTargetFieldSelector')
您是否尝试过使用 Webriver-Key 命令删除输入?
在我的项目中,我这样做:
for (let i = 0; i < amountChars; i++) {
browser.keys(WEBDRIVER_KEYS['Backspace']);
}
WEBDRIVER_KEYS 是 spectron-keys npm 包的一部分。
对我来说,这就像一个魅力:
browser.getValue('css selector', '#id', (textValue) => {
for(let i = 0; i < textValue.value.length; i ++) {
this.setValue('#id', '\u0008');
}
});
不得不想出这种解决方案,因为任何提供的解决方案都不适合我。
我今天真的很痛苦,所以我分享了我的解决方案,因为其他解决方案都不适用于 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 做另一件事的命令