我有一个按钮,一旦点击就会以Angular的$promise
格式发出一个AJAX调用。登录成功后,会更改$scope
变量,并显示如下所示的元素:
<section id="logged-in-section" ng-if="auth.user !== null">
// Section to display if logged in
</section>
显示。我目前正在测试以上内容:
loginButton.click();
browser.sleep(2000);
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
在Proractor检查是否显示browser.sleep(2000)
之前, logged-in-section
将浏览器闲置两秒钟。如果我取出browser.sleep(2000)
,则测试失败,因为在登录按钮和从服务器返回的响应之间存在延迟。
将登录按钮链接到expect
语句的语法是什么,以便Protractor仅在返回#logged-in-section
后检查$promise
?
答案 0 :(得分:0)
你可以这样做:
loginButton.click().then(function(){
browser.waitForAngular().then(function (){ //this should wait for the angular digest process to finish
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
})
});
或者这应该适用于:
loginButton.click().then(function(){
browser.wait(element(by.id("logged-in-section")).isDisplayed);
expect($("#logged-in-section").isDisplayed()).toBeTruthy();
});