以下代码从网页获取一些文本,获取输入框,清除它并将之前的文本发送到该输入框:
var pText = browser.element(by.css('some_tag')).getText();
var inputbox = browser.element(by.css('[data-aid="login-app-input-username"]'));
inputbox.clear();
// if pText is defined here, everything is ok.
inputbox.then(
function(e){
pText.then(
function(text) {
e.sendKeys(text);
});
});
结果是sendKeys()
在clear()
之前完成,尽管代码的顺序。
如果我们删除pText
3行的声明(clear()
之后),一切正常。
我的问题是如何以正确的顺序执行上述代码而不依赖于pText
的声明。
顺便说一句,我知道sendKeys()
可以收到承诺,这不是我正在寻找的解决方案。
答案 0 :(得分:2)
最简单的方法是:
var pText = browser.element(by.css('some_tag')).getText();
var inputbox = browser.element(by.css('[data-aid="login-app-input-username"]'));
pText.then(function(text) {
inputbox.clear().sendKeys(text);
}