我正在角度应用程序上使用Protractor自动执行e2e测试。 但是,在输入字段上发送密钥时出现问题。 sendKeys每次都会错过几个字符,所以我找到了一个解决方法:
static sendKeys(value, element){
value.split('').forEach((c) => element.sendKeys(c));
}
这很有效,但它需要的时间是原始sendKeys函数的3倍。
没问题,我的测试仍然功能正常吗? 我的应用程序现在有新的字段,后面有脚本。 其中一个是日期选择器输入,您可以从datePicker中选择或手动输入。但是,对于今天的日期,您将键入09022018并在正确的位置自动附加斜杠(如09/02/2018所示)。如果您要输入错误的日期,则该字段将被清除。
现在回到问题:似乎我的每个提交密钥后我执行sendKeys和原始的一个松散焦点。这意味着我无法在输入字段中输入有效日期,因为它在每次模拟按键后都会被清除。
我可以使用browser.executeScript来修复它,但我无法测试添加斜杠的功能。此外,当您键入时,日期选择器仍然打开并在每次按键后刷新,您可以随时从中选择日期,这也是我想要测试的功能。
提前致谢
答案 0 :(得分:0)
使用executeScript
在backgrond中设置日期,然后使用sendKeys
在末尾输入空格或Tab以触发Keyborad事件,该事件将检查输入并使用斜杠格式化输入
function enterDate(date) {
var script = 'arguments[0].value=arguments[1]';
// input box for date
var dateBox = element(by.xxx(yyy));
browser.executeScript(script, dateBox, date);
dateBox.sendKeys(" ");
// or try send Tab
dateBox.sendKeys(protractor.Key.TAB);
}
enterDate('09022018');
您可以在修复的其他字段上尝试此解决方案,但需要再花3次。