以下代码从网页中获取一些文本,获取一个输入框,清除它并将之前的文本发送到该输入框:
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/webdriver 执行 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998230/