我是 Protractor (和异步 JavaScript)的新手,但在最近几周的学习中我真的很喜欢它。
由于我们处理对象,所以我试图想出一个函数,如果对象可见/存在,则该函数返回 bool 值。
部分实现如下:
function waitObject(elm, timeout) {
return browser.driver.wait(function() {
return elm.isPresent().then(function(res) {
return res;
});
}, timeout);
}
我想在这里实现两件事:
1) 超时后返回 true/false。
2) 当为 false 时,不会抛出超时错误,而只是抛出 false。这样,我就可以继续剩下的测试了。
最佳答案
只需使用 then
作为 browser.wait
返回一个 promise ,根据传递给 browser.wait
的条件解析或拒绝:http://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait
waitObject(element, 1000).then(function () {
// The condition resolved truthy, element is present
}, function () {
// Timed out
});
这样您就可以根据条件是否超时执行不同的操作。
我认为不从函数返回 promise 会很棘手。因为 Protractor 中所做的一切都是异步发生的。
关于javascript - 对于 Protractor 测试,我们可以在没有 browser.wait() 函数的情况下获取 waitElement 对象值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30961153/