为什么sendKeys在第二次迭代中没有输入值

时间:2019-06-22 05:15:37

标签: protractor

我们正在使用量角器来自动化测试Web应用程序的创建/更新工作流程。

我们有一个SetValue函数,该函数用于创建和更新,在提交表单之前调用它来填充一些值。

在创建工作流程期间,此过程很顺利。但是,当打开表单进行更新时,clear()起作用了,但是sendKeys没有键入值。

在这方面的任何帮助/投入将不胜感激。

SetValue(value){
    this.elements.$$('input').get(0).clear()
    browser.actions().mouseMove(this.elements).sendKeys(value).perform()
}

2 个答案:

答案 0 :(得分:0)

MouseMove只会将鼠标移动到指定的元素,不会单击它,因此您的元素将永远不会聚焦。

如果您在输入值之前尝试清除该字段,则应使用相同的元素定位符。

您可以尝试将其更改为点击吗?

SetValue(value){
    let field = this.elements.$$('input').get(0)
    field.clear()
    browser.actions().click(field).sendKeys(value).perform()
}

是否有可能在创建窗口期间将要发送键的元素自动聚焦,而不是在显示update元素时出现。

答案 1 :(得分:0)

自从前一段时间Protractor摆脱了控制流程,您可能对此有疑问吗?
我可能会尝试使用.then()或使用async/await来更精确地链接这些承诺,并在与之交互之前在该元素上添加一个等待:

const EC =  protractor.ExpectedConditions;
const yourElement = this.elements.$$('input').get(0);

SetValue = async (value) => {
    await browser.wait(EC.elementToBeClickable(yourElement));
    await yourElement.clear();
    await browser.actions().mouseMove(yourElement).sendKeys(value).perform();
};