Javascript 量角器:非角度登录到角度站点

Javascript 量角器:非角度登录到角度站点,javascript,angularjs,protractor,angularjs-e2e,Javascript,Angularjs,Protractor,Angularjs E2e,在我到达要测试的站点之前,我必须先访问一个登录(非角度)页面 var url = 'http://localhost:9999/login?usern=bar'; browser.driver.get(url); 虽然这是一个非角度页面,但将?usern=bar传递到url中,服务器会给出一个302的HTTP代码,并重定向到页面/new user。在新用户页面中,我必须单击一个按钮才能开始测试 但无论我做什么,我总是得到 Error: Timeout - Async callback was

在我到达要测试的站点之前,我必须先访问一个登录(非角度)页面

var url = 'http://localhost:9999/login?usern=bar';
browser.driver.get(url);
虽然这是一个非角度页面,但将
?usern=bar
传递到url中,服务器会给出一个302的HTTP代码,并重定向到页面
/new user
。在
新用户
页面中,我必须单击一个按钮才能开始测试

但无论我做什么,我总是得到

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
我的流程中有一些错误,因为我可以看到
新用户
页面,但是按钮没有被点击(并且在很久之后错误就会出现)

等级库文件:

var Site = require('helper/site');

describe('Main', function {
    beforeAll(function () {
        return Site.login();
    });

    it('should show the main page', function () {
        epect(browser.getCurrentUrl()).toMatch(/\/main/);
    });
});
Site.js:

function login() {
    browser.driver.get('http://localhost:9999/login?usern=bar');

    browser.driver.wait(function () {
        return browser.driver.getCurrentUrl().then(function (url) {
            return /\/new-user/.test(url);
        });
    });

    element(by.css('.save')).click();
}

module.exports = {
    login: login
};
任何帮助都将不胜感激

您必须关闭同步:


不过,想一想更好的地方关闭它,然后在主页上再次打开。

我使用browser.waitForAngularEnabled(false)关闭等待angular应用程序。我的应用程序使用O365登录

public async HandleO365Login() {
        await browser.waitForAngularEnabled(false);
        await this.o365usernameTextBox.sendKeys(Constants.USER_EMAIL);
        await this.o365NextButton.click();
    }

你可以在angular应用程序加载后打开它。

这会更好!现在它导航到主页面。但是我仍然得到相同的超时错误。但是,如果我删除了
browser.ignoreSynchronization=false测试完成。有什么建议吗?@JeanlucaScaljeri-hm,如果您在主页上添加
browser.waitForAngular()
,会怎么样?谢谢。
browser.waitForAngular()
不会破坏它,只要我添加
browser.ignoreSynchronization=false(也与waitForAngular结合使用)测试将不会运行,并且会超时。明白了!我有一个ping服务,它一次又一次地使用$timeout。指出了这一点。非常感谢你的帮助!
public async HandleO365Login() {
        await browser.waitForAngularEnabled(false);
        await this.o365usernameTextBox.sendKeys(Constants.USER_EMAIL);
        await this.o365NextButton.click();
    }