Protractor sendKeys问题与脚本输入字段

时间:2018-02-09 11:34:05

标签: selenium selenium-webdriver protractor end-to-end

我正在角度应用程序上使用Protractor自动执行e2e测试。 但是,在输入字段上发送密钥时出现问题。 sendKeys每次都会错过几个字符,所以我找到了一个解决方法:

static sendKeys(value, element){
    value.split('').forEach((c) => element.sendKeys(c));
}

这很有效,但它需要的时间是原始sendKeys函数的3倍。

没问题,我的测试仍然功能正常吗? 我的应用程序现在有新的字段,后面有脚本。 其中一个是日期选择器输入,您可以从datePicker中选择或手动输入。但是,对于今天的日期,您将键入09022018并在正确的位置自动附加斜杠(如09/02/2018所示)。如果您要输入错误的日期,则该字段将被清除。

现在回到问题:似乎我的每个提交密钥后我执行sendKeys和原始的一个松散焦点。这意味着我无法在输入字段中输入有效日期,因为它在每次模拟按键后都会被清除。

我可以使用browser.executeScript来修复它,但我无法测试添加斜杠的功能。此外,当您键入时,日期选择器仍然打开并在每次按键后刷新,您可以随时从中选择日期,这也是我想要测试的功能。

提前致谢

1 个答案:

答案 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次。