【发布时间】:2014-04-27 17:13:06
【问题描述】:
下面的代码找到一个带有量角器(一个身份验证按钮)的 webElement,并尝试以该元素作为参数来解析一个 Promise。
function someFunc() {
var deferred = q.defer();
browser.findElement(by.css('[data-aid="buttons.authenticate"]')).then(
function(e) {
console.log('element found: ' + e);
deferred.resolve(e);
}
);
return deferred.promise;
}
someFunc().then(
function(elem) {
console.log('got elem ' + elem);
elem.click();
}
);
输出:
element found: [object Object]
所以 then 函数永远不会被调用。当我用其他值(int,string,array,map)替换resolve()时,它工作正常。那为什么我不能返回一个 WebElement 对象呢?
谢谢你
【问题讨论】:
-
找到一个元素然后点击它是你的最终用例吗?我问是因为如果是这样,那么我认为有更简单的方法和更少的代码。
-
其实...
browser.findElement(by.css('[data-aid="buttons.authenticate"]')).click()会这样做,我怀疑。 -
这只是一个更复杂案例的简单示例 - 最终我想用另一个“包装”返回的承诺。在这个例子中,我想从外面做
click()。为此,我需要WebElement对象
标签: javascript webdriver promise protractor