gpt4 book ai didi

angularjs - afterEach 在继续之前不等待完成

转载 作者:行者123 更新时间:2023-11-28 20:11:40 24 4
gpt4 key购买 nike

我使用 afterEach 来注销,但我的测试尝试在 afterEach 完成注销之前登录。

我试图避免使用 sleep 语句(确实会减慢速度)。

如何让测试等待上一个 beforeEach 完成?

代码片段:

afterEach(function() {
AccountBlock.logout().then(function(){
browser.sleep(2000); // I want to get rid of this
});
});

logout() 方法(来自 AccountBlock 对象):

this.logout = function() {
var logoutLink = this.logoutLink;
var userName = this.userName;
return logoutLink.isDisplayed().then(function(isDisplayed){
if (!isDisplayed) {
return userName.click().then (function() {
return logoutLink.click();
}); // open the account menu before logout
} else { // account menu already displayed
return logoutLink.click();
}
});
}
this.userName = element(by.css('a[ng-bind="userName"]'));
this.logoutLink = element(by.css('a[ng-click^="logout"]'));

最佳答案

browser.wait 绝对是要走的路,而不是直接调用元素来询问它们是否存在或显示 Protractor 具有内置功能,这就是所谓的 ExpectedConditions .您可以使用这个 let protractor 强制浏览器等待,直到它满足自己的预期条件。

下面我正在查找元素,使用预期条件检测元素是否存在,然后使用 not 运算符检测元素何时不再存在。这应该强制 browser.wait 暂停 future 的 promise ,直到该条件为真。

afterEach(function(){
var ec = protractor.ExpectedConditions;
var logout = element(by.css('a[ng-click^="logout"]'));
var logoutLink = ec.presenceOf(logout);
var logoutLinkNotThereAnymore = ec.not(logoutLink);

//do logout
browser.wait(logoutLinkNotThereAnymore, 10000, "Waited 10 seconds");
});

beforeEach(function(){
//do login
});

关于angularjs - afterEach 在继续之前不等待完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27624159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com