如何解决发送键不适用于页面对象模型 编辑:
我刚刚开始在非角度应用程序上使用量角器试验页面对象模型。我不是新手,但离专家还差得很远,所以如果我的措辞全错了,请原谅我。我几天来一直在研究和尝试建议,但没有运气。 我有这个元素-
<input type="text" class="form-control" name="form_component_data[AgentsSettings][agent][chat_welcome_msg]" id="agentssettings-agent-chat_welcome_msg" value="How can I help">
在我的 POM 中有
var txtWelcomemessage = element(by.css("input[name='form_component_data[AgentsSettings][agent][chat_welcome_msg]']"));
this.clearWelcomemessage = function(){
txtWelcomemessage.clear();
};
this.clearWelcomemessage = function(){
txtWelcomemessage.clear();
};
this.setWelcomemessage = function(){
txtWelcomemessage.sendKeys();
};
在我的测试脚本中
settings.clearWelcomemessage();
browser.sleep('5000');
settings.setWelcomemessage('hey,hey,hey');
browser.sleep('5000');
清除消息有效,我在清除消息后看到字段中的光标,但发送键什么也不做,也没有错误。
但是,当我将下面的代码直接输入到测试脚本中时,消息会清除并且发送键工作正常。
driver.findElement(by.css("input[name='form_component_data[AgentsSettings][agent]
[chat_welcome_msg]']")).click();
browser.sleep('3500')
driver.findElement(by.css("input[name='form_component_data[AgentsSettings][agent]
[chat_welcome_msg]']")).sendKeys('hey,hey');
这是我目前在应用程序中使用的第三个字段。前两个字段使用 POM 工作没有任何问题。我不确定这个有什么不同。我可以将其用作解决方法,但我只是想知道我在页面对象中缺少什么。
解决方法
如果您的真实代码如下所示:
settings.clearWelcomemessage();
browser.sleep('5000');
settings.setWelcomemessage('Hey,Hey,Hey');
browser.sleep('5000');
那么这行不通,因为所有这些操作都是asynchronius
函数。意味着,它们不执行“线性”。其他编程语言通常会在进入下一行之前等待函数完成,但在 js/nodejs 中的异步操作的情况下并非如此。
请尝试正确等待每个执行的函数::
settings.clearWelcomemessage().then(() => {
console.log('cleared welcome messgae! ')
return browser.sleep('5000').then(() => {
console.log('slept 5000')
return settings.setWelcomemessage('Hey,Hey').then(() => {
console.log('welcome message set!')
return browser.sleep('5000').then(() => {
console.log('second sleap done!')
})
})
})
}).catch(err => console.error('error occured!',err))
您还必须调整功能本身。他们执行
async
操作,您应该始终返回结果,因为它们返回一个 Promise
对象。 Docs
编辑:
其实就是给 sendKeys() 添加一个参数。没有密钥将被发送..
this.clearWelcomemessage = function(){
return txtWelcomemessage.clear();
};
this.clearWelcomemessage = function(){
return txtWelcomemessage.clear();
};
// add message parameter. Or no message will be sent :)
this.setWelcomemessage = function(message){
return txtWelcomemessage.sendKeys(message);
};
如果这解决了问题,您应该了解 promises
相关信息。 async & await
等
如果您了解 async
操作及其工作原理,请在问题中调整您的代码,因为它不是原始代码..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。