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

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

最佳答案

最简单的方法是:

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

关于javascript - Protractor/网络驱动程序执行 promise ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24998230/

10-11 07:18