我试图在使用angular-cli构建的Angular2(只是Angular)应用程序中使用Protractor.
我的问题:Angular应用页面上的元素在browser.waitForAngularEnabled默认设置时没有被找到true (如'我相信我在一个有角度的页面上,并希望Protractor做它的魔力').如果我设置它们,它们被发现就好browser.waitForAngularEnabled了false (如'我不是在一个有角度的页面上并想自己处理它,坐下量角器').如何在我的Angular页面上找出导致这种情况的原因?
我有一个带有非Angular Auth0登录页面的产品,可以访问以Angular编写的产品的其余部分(准确地说是 Angular 4.3.2).我已成功遍历非Angular登录页面上的登录.我翻转waitForAngularEnabled切换到false便于非Angular登录.true在点击提交按钮后,我将其转回到我希望加载初始登录页面(Angular)的位置.代码如下:
browser.waitForAngularEnabled(false);
browser.driver.get('https://dashboard.net/projects');
browser.driver.sleep(10000);
browser.driver.findElement(By.css("[type='email']"));
browser.driver.findElement(By.css("[type='email']")).sendKeys("email@example.com");
browser.driver.findElement(By.css(".auth0-label-submit")).click();
browser.driver.findElement(By.id("passwordInput")).sendKeys("password");
browser.driver.findElement(By.id("submitButton")).click();
browser.driver.sleep(5000); // needed if not waiting for Angular
//browser.waitForAngularEnabled(true); // Back to Protractor land we go
let elementToFind = element(by.className("header-text"));
elementToFind.isDisplayed().then(function() {grabTheDarnLocalStorage()});
expect(elementToFind.isDisplayed()).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)
如果我取消注释该browser.waitForAngularEnabled(true);行以说明我回到Angular代码中,我得到错误跟踪如下:
Failed: Timed out waiting for asynchronous Angular tasks to finish after 30 seconds. This may be because the current …Run Code Online (Sandbox Code Playgroud)