量角器第三方登录:无法访问此网站

时间:2018-06-20 15:15:32

标签: angular protractor automated-tests e2e-testing okta

我的考试有问题;我知道为什么会这样,所以我正在寻求建议。我有一个使用第三方登录服务(okta)的角度应用程序。我正在尝试进行e2e测试。为了使用该应用程序,用户必须先登录,否则他们将无法使用网站的任何功能(如果我未登录,则无法进行测试)。因此我计划使用prepare或beforeAll / each函数登录。尚未决定如何实现。但是我的问题不是,我创建了一个要登录的测试。我的测试将您带到Okta登录页面,输入凭据,然后登录。然后将您带到验证页面,再次传递代码,然后按下验证按钮。按下此按钮后,应该返回我的角度主页,登录。

现在这是发生问题的地方。当按下验证按钮,而不是返回到我的主页时,我收到此错误页面:

enter image description here

现在我相信问题是这个,如果我错了,请纠正我。单击验证按钮时,应使用户返回Localhost:4200页面。现在量角器使用其他地址。我认为这可能是问题所在。为了测试这一点,在量角器中,我进入错误页面后执行以下操作:

    browser.get('http://localhost:4200');

这样做,我再次遇到相同的错误。但是如果我这样做:

browser.get('http://localhost:49152')

我被带回到我的主页,但是显然我没有登录,因此不能将其用作解决方法。任何输入都会很棒!谢谢:)

2 个答案:

答案 0 :(得分:1)

这些“前提条件”或“操作之前”需要以更简单和持久的方式执行。 例如,如果您具有此第三方登录系统的API,则最好使用它。对于javascript测试,存在一个不错的库-request-promise

允许您直接连接服务并解析响应正文,以获取所有需要的数据以登录Angular App。

describe('Login: ', function () {

    beforeAll(async () => {
        await createUser(); -- //the method where executed all your main precondition
    });

    beforeEach(async function () {
        await new HomePage().open();
        await expect(await login.loginButton.isPresent()).toBeTruthy('Button Sign In is not present?'))
    });

    it('First Login', async function () {
        await login.email.sendKeys(login.randomEmail);
        await login.password.sendKeys(login.passwordToUse);
        await login.loginButton.click();
        await tos.tosDo();
        });
}

答案 1 :(得分:0)

所以我找到了解决方法。通过我的研究,我找不到将量角器的端口号更改为我需要的可靠方法。因此,在命令行中,我只运行:

ng e2e --port 4200

我可能会在我的角度文件中编写脚本,所以我不必继续输入,但是,它可以工作。