量角器,登录到asp,net MVC登录页面,等待默认页面,然后重定向到angular页面并做测试…

Protractor, login to asp,net MVC login page, wait for default page then , redirect to angular page and do tests....how?

本文关键字:登录 angular 测试 重定向 默认 net asp MVC 量角器 等待 然后      更新时间:2023-09-26

我正在尝试在我的MVC项目上实现量角器测试,我们正在慢慢转换到Angular

我在MVC登录页面上登录,输入登录名和密码,点击登录,然后我需要等待登录通过几个页面,并到达默认屏幕。

然后我需要重定向到我的一个Angular页面,并运行一个简单的测试(button = enabled)。

我认为这是我需要做的,如果我是正确的,我在等待几个重定向结束在默认页面失败。在整个登录过程完成之前,我正在重定向到我的页面。

我有:

// spec.js
//ptor = protractor.getInstance();
describe('ScoutAngular Protractor Tests', function () {
    beforeEach(function () {
        browser.ignoreSynchronization = true;
        browser.get('http://localhost/Scout3G/Account/LogOn');
        browser.driver.findElement(by.id('UserName')).sendKeys('oster.robert');
        browser.driver.findElement(by.id('Password')).sendKeys('H0gw1ld!');
    });
    it('should login and goto the angular page', function () {
        var submit = browser.driver.findElement(protractor.By.tagName('input'));
        browser.ignoreSynchronization = false;
        submit.click().then
        (
            function () 
            {
                console.log("===================== 1");
              //<<<<<--------I think i need to wait for login to finish several page redirects here
                browser.get('http://localhost/Scout3G/Maintenance/TestAngularEWB')
                .then(function () {
                        browser.driver.sleep(1);
                        browser.waitForAngular();
                        console.log("===================== about to expect");
                        element(by.Css("button").isEnabled());
                    }
                );
            }
        );
        console.log("===================== 4");
    });

});

当我得到我的TestAngularEWB页面,我得到一个用户没有登录错误…

我怎么能让它等待默认页面,重定向到TestAngulareEWB之前?

我是否犯了其他菜鸟量角器错误?

如果您知道重定向链的结束URL,您可以使用browser.wait()等待当前URL等于预期的URL:

var urlChanged = function(expectedUrl) {
  return function () {
    return browser.getCurrentUrl().then(function(actualUrl) {
      return expectedUrl === actualUrl;
    });
  };
};
browser.wait(urlChanged("http://url.to/wait/for"), 5000); 
it('should login and goto the angular page', function () {
  browser.ignoreSynchronization = true;
  element(by.tagName('input')).click();
  browser.wait(protractor.until.elementLocated(by.partialLinkText('Hello, non-angular!'))) //wait until user is redirected to non-angular page
  browser.get('http://localhost/Scout3G/Maintenance/TestAngularEWB');
  browser.wait(protractor.until.elementLocated(by.partialLinkText('Hello, angular'))) //wait until user is redirected to angular page
  browser.ignoreSynchronization = false;
});