订单量角器/ webdriver执行promises

时间:2014-07-28 15:05:44

标签: javascript selenium-webdriver webdriver protractor

以下代码从网页获取一些文本,获取输入框,清除它并将之前的文本发送到该输入框:

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()可以收到承诺,这不是我正在寻找的解决方案。

1 个答案:

答案 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);
}