我们正在使用量角器来自动化测试Web应用程序的创建/更新工作流程。
我们有一个SetValue函数,该函数用于创建和更新,在提交表单之前调用它来填充一些值。
在创建工作流程期间,此过程很顺利。但是,当打开表单进行更新时,clear()起作用了,但是sendKeys没有键入值。
在这方面的任何帮助/投入将不胜感激。
SetValue(value){
this.elements.$$('input').get(0).clear()
browser.actions().mouseMove(this.elements).sendKeys(value).perform()
}
答案 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();
};