如果条件永远不会变为真,Protractor browser.wait return 是什么意思?
What does Protractor browser.wait return if the condition never becomes true?
我想使用 browser.wait 函数反复检查按钮元素是否存在一定时间,然后使用相关回调。下面我有不使用等待的代码。
detailsButton.isPresent()
.then(function(present){
if(!present) {
callback();
} else {
callback(new Error('The details button was not present.'));
}
});
我需要一些帮助来修复此代码,因为我不确定等待函数如何处理 falure/timeout。本质上,我问的是下面代码的“.then”部分应该是什么,它不像我目前拥有的那样笨拙。
browser.driver.wait(function(){
return pgTransactionHistory.transactionHistoryDetails.isPresent();
}, 60000).then(function(){
pgTransactionHistory.transactionHistoryDetails.isPresent()
.then(function(present){
if(!present) {
callback();
} else {
callback(new Error('The details button was not present.'));
}
});
});
谢谢!
等待函数在超时时拒绝。也就是说 - 它 returns 一个承诺,当达到超时时它拒绝它。
browser.driver.wait(function(){
return pgTransactionHistory.transactionHistoryDetails.isPresent();
}, 60000).then(function(){
callback(); // instead of doing this, you should return a promise
}).catch(function(){
callback(new Error('The details button was not present.'));
});
有两种方法可以做到这一点:
首先,您可以将 browser.wait 的第三个参数用于将作为错误消息发送的字符串。像这样:
browser.driver.wait(function(){
return //condition
}, timeout, 'Error message string')
.then(function(){
callback();
});
或者其次使用 .then 的第二个参数,如下所示:
browser.driver.wait(function(){
return //condition
}, timeout)
.then(function(){
callback();
}, function(){
//code to want to execute on failure.
});
因为 Protractor 提供了同步编写异步操作的能力,所以也可以以更同步的方式处理 browser.wait 超时。
export class AppPage {
public static isLoaded() {
return browser
.wait(until.presenceOf(by.id('myID')), 5000)
.then(() => true, () => false);
}
}
并在您的 e2e.spec 中使用它,如下所示:
expect(AppPage.isLoaded()).toBeTruthy();
我想使用 browser.wait 函数反复检查按钮元素是否存在一定时间,然后使用相关回调。下面我有不使用等待的代码。
detailsButton.isPresent()
.then(function(present){
if(!present) {
callback();
} else {
callback(new Error('The details button was not present.'));
}
});
我需要一些帮助来修复此代码,因为我不确定等待函数如何处理 falure/timeout。本质上,我问的是下面代码的“.then”部分应该是什么,它不像我目前拥有的那样笨拙。
browser.driver.wait(function(){
return pgTransactionHistory.transactionHistoryDetails.isPresent();
}, 60000).then(function(){
pgTransactionHistory.transactionHistoryDetails.isPresent()
.then(function(present){
if(!present) {
callback();
} else {
callback(new Error('The details button was not present.'));
}
});
});
谢谢!
等待函数在超时时拒绝。也就是说 - 它 returns 一个承诺,当达到超时时它拒绝它。
browser.driver.wait(function(){
return pgTransactionHistory.transactionHistoryDetails.isPresent();
}, 60000).then(function(){
callback(); // instead of doing this, you should return a promise
}).catch(function(){
callback(new Error('The details button was not present.'));
});
有两种方法可以做到这一点: 首先,您可以将 browser.wait 的第三个参数用于将作为错误消息发送的字符串。像这样:
browser.driver.wait(function(){
return //condition
}, timeout, 'Error message string')
.then(function(){
callback();
});
或者其次使用 .then 的第二个参数,如下所示:
browser.driver.wait(function(){
return //condition
}, timeout)
.then(function(){
callback();
}, function(){
//code to want to execute on failure.
});
因为 Protractor 提供了同步编写异步操作的能力,所以也可以以更同步的方式处理 browser.wait 超时。
export class AppPage {
public static isLoaded() {
return browser
.wait(until.presenceOf(by.id('myID')), 5000)
.then(() => true, () => false);
}
}
并在您的 e2e.spec 中使用它,如下所示:
expect(AppPage.isLoaded()).toBeTruthy();