如何在量角器中使用非角度登录页面测试 angularjs 应用程序

How to test angularjs application with a nonangular login page in protractor

我正在努力寻找一种方法来测试我的 angularjs 应用程序,该应用程序具有非 angular 登录页面。

应用程序的所有页面都受登录保护,因此无论我测试什么页面,我都需要先登录。 我浏览了互联网上的各种想法,但似乎没有任何效果 - 它只是在使用量角器登录后没有将我重定向到应用程序,而当我手动执行时,一切都很好。

这是我目前拥有的:

onPrepare: function() {
            browser.driver.get('http://localhost:9000/app);
            browser.driver.findElement(by.id('userName')).sendKeys('admin');
            browser.driver.findElement(by.id('password')).sendKeys('pass123');
            browser.driver.findElement(by.id('loginBtn')).click();

            return browser.driver.wait(function() {
                return browser.driver.getCurrentUrl().then(function(url) {
                    return /home/.test(url);
                });
            }, 10000);

我也试过设置 browser.ignoreSynchronization = true; 但还是没成功。

有人知道我还能尝试什么吗?

browser.get()之前设置ignoreSynchronization=true,点击登录按钮后重置为false

onPrepare: function() {

  browser.ignoreSynchronization = true;

  browser.driver.get('http://localhost:9000/app);
  browser.driver.findElement(by.id('userName')).sendKeys('admin');
  browser.driver.findElement(by.id('password')).sendKeys('pass123');
  browser.driver.findElement(by.id('loginBtn')).click();

  browser.ignoreSynchronization = false;

  return browser.driver.wait(function() {
      return browser.driver.getCurrentUrl().then(function(url) {
          return /home/.test(url);
      });
  }, 10000);

如果上面的代码不能解决您的问题,请尝试将上面的登录代码移动到一个函数中,不要调用 onPrepare 中的函数,而是像 beforeAll 中那样调用函数。我有一些失败的经验开始在 onPrepare

中与浏览器交互