首页 > 解决方案 > 如果“用户”已登录,我想每次都调用自动检查。如果没有,则“用户”登录,然后重定向回(url)

问题描述

为了使测试用例尽可能短,我想避免重复整个登录过程和每次点击。

我想要的是一个功能来检查“用户”是否已经登录并将其与每种情况的不同逻辑(是或否)结合起来。

假设我立即调用 browser.get('/newUrl');测试用例的第一行。应该发生的是:系统检查它是否已登录...如果是 -> 重定向到/newUrl| 如果 NO -> 重定向到/login,登录然后重定向回/newUrl

因此,我知道量角器的urlIsand getCurrentUrl,我尝试将其与browser.driver. 这还没有奏效,我有点期待。

  redirectToMandate() {
    browser.driver.wait(() => {
      browser.driver.getCurrentUrl().then(() => {
        if (browser.driver.getCurrentUrl() !== '/mandate') {
          const loginPage = element(by.cssContainingText('a', 'Passwort vergessen? (Mail an Admin)'));
          browser.wait(until.visibilityOf(loginPage), 15000, 'Error element taking too long to appear');

          page.valuesForLogin();
          const loginButton = element(by.id('btn-login'));
          loginButton.click();

          const mandateText = element(by.cssContainingText('.AppSubHeader_mainTitle', 'Mandate'));
          expect(browser.wait(until.visibilityOf(mandateText)));
        } else {
          browser.get('/mandate');
          browser.wait(
            until.urlContains('/mandate'), 10000
          );
        }
      });
    });
  }

我已经开始尝试类似上面的方法,但它不起作用

我将不胜感激任何可能的帮助,谢谢!

标签: cssredirectprotractor

解决方案


老实说,在这 20 行中,它可能有 100 个不同的原因导致它不起作用。所以你真的应该发布你得到的错误

这是我在黑暗中拍摄的,试试吧

redirectToMandate() {
  browser.driver.wait(() => {
    browser.driver.getCurrentUrl().then((currentURL) => { // these two lines
      if (!currentURL.includes('mandate')) { // these two lines
        const loginPage = element(by.cssContainingText('a', 'Passwort vergessen? (Mail an Admin)'));
        browser.wait(
          until.visibilityOf(loginPage), 
          15000, 
          'Error element taking too long to appear'
        );

        page.valuesForLogin();
        const loginButton = element(by.id('btn-login'));
        loginButton.click();

        const mandateText = element(by.cssContainingText('.AppSubHeader_mainTitle', 'Mandate'));
        expect(browser.wait(until.visibilityOf(mandateText)));
      } else {
        browser.get('/mandate');
        browser.wait(
          until.urlContains('/mandate'), 10000
        );
      }
    });
  });
}

如果没有帮助,请学习调试,我只能说...例如首先控制台记录您的网址,然后尝试验证是否/其他工作,然后分别检查每个步骤等...


推荐阅读