量角器等待Angular加载

时间:2016-01-12 11:04:27

标签: angularjs protractor sleep angularjs-e2e

我的测试是在非角度页面中进行登录,然后进入Angular页面。 目前,为了使测试正常工作,我正在使用睡眠和超时​​(在登录后立即):

browser.sleep(5000);
browser.switchTo().defaultContent();
browser.ignoreSynchronization = false;
flow.timeout(5000);

我已经尝试删除其中的每一个,并尝试了预期条件:

var EC = protractor.ExpectedConditions;
var profilePhoto = element(By.css(".profile-photo"));
browser.wait(EC.visibilityOf(profilePhoto), 15000);

也尝试使用

browser.waitForAngular();

但是 - 没有睡眠和超时​​的任何尝试都会导致失败并且

Error while waiting for Protractor to sync with the page: "angular could not be found on the window"

我的问题是 - 我可以确保在没有“睡眠”或“超时”的情况下进入主页(登录后)吗?

1 个答案:

答案 0 :(得分:1)

我今天早些时候遇到了同样的问题。在登录尝试之前添加browser.ignoreSynchronization = true;并在登录尝试后添加browser.wait...修复了问题:

// non-angular page
browser.get("/login");

// ignore synchronization since we're transitioning from a non-angular page to an angular page
browser.ignoreSynchronization = true;

// login
element(by.id("email")).sendKeys("username");
element(by.id("password")).sendKeys("password");
element(by.partialButtonText("Login")).click();

// wait
var EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(element(by.id("dashboard"))), 10000);