相关疑难解决方法(0)

在Protractor中传播承诺

q有这个简洁的功能来解析和传播多个promises到单独的参数:

如果你有一个数组的承诺,你可以使用spread作为替代.扩展函数将值"扩展"到履行处理程序的参数上.

return getUsername()
    .then(function (username) {
        return [username, getUser(username)];
    })
    .spread(function (username, user) {

    });
Run Code Online (Sandbox Code Playgroud)

在量角器中,我们正在尝试使用内置的protractor.promise来自WebDriverJS.

问题:

是否可以使用"传播"功能protractor.promise

用例示例:

我们已经实现了一个自定义的jasmine matcher来检查元素是否被聚焦.在这里,我们需要在进行相等比较之前解决两个promise.目前,我们正在使用protractor.promise.all()then():

protractor.promise.all([
    elm.getId(),
    browser.driver.switchTo().activeElement().getId()
]).then(function (values) {
    jasmine.matchersUtil.equals(values[0], values[1]);
});
Run Code Online (Sandbox Code Playgroud)

理想情况下,我们希望处于更易读的状态:

protractor.promise.all([
    elm.getId(),
    browser.driver.switchTo().activeElement().getId()
]).spread(function (currentElementID, activeElementID) {
    return jasmine.matchersUtil.equals(currentElementID, activeElementID);
})
Run Code Online (Sandbox Code Playgroud)

javascript promise angularjs selenium-webdriver protractor

10
推荐指数
1
解决办法
1154
查看次数