Protractor:非角度登录到角度网站

Protractor: Non angular login to angular site

本文关键字:网站 登录 Protractor      更新时间:2023-09-26

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

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

尽管这是一个非角度页面,但将?usern=bar传递到url中,服务器会给出302的HTTP CODE,并重定向到页面/new-user。在new-user页面中,我必须单击一个按钮才能开始测试

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

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

我的流程中出现了问题,因为我可以看到new-user页面,但按钮没有被点击(在那之后很长一段时间就会出现错误)

规范文件:

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
};

如有任何帮助,将不胜感激

您必须关闭同步:

describe('Main', function {
    beforeAll(function () {
        browser.ignoreSynchronization = true;
        return Site.login();
    });
    it('should show the main page', function () {
        browser.ignoreSynchronization = false;
        expect(browser.getCurrentUrl()).toMatch(/'/main/);
    });
});

不过,当你进入主页时,想想更好的地方把它关掉,然后再打开。

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

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

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