小编S.H*_*ton的帖子

如何调试等待异步Angular任务的超时?未能在角度页面上找到元素

编辑:请注意,我在@ ernst-zwingli的帮助下找到了我的问题的根源,所以如果你有同样的错误,他的一个明确的修复可能会帮助你.我的问题是Protractor本身的一个已知问题,如果您认为这可能是您,我已经扩展了我的步骤,以便在原始问题之后找出问题的根源.


我试图在使用angular-cli构建的Angular2(只是Angular)应用程序中使用Protractor.

我的问题:Angular应用页面上的元素在browser.waitForAngularEnabled默认设置时没有被找到true (如'我相信我在一个有角度的页面上,并希望Protractor做它的魔力').如果我设置它们,它们被发现就好browser.waitForAngularEnabledfalse (如'我不是在一个有角度的页面上并想自己处理它,坐下量角器').如何在我的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)

javascript jasmine protractor angular

7
推荐指数
1
解决办法
2286
查看次数

标签 统计

angular ×1

jasmine ×1

javascript ×1

protractor ×1