量角器无法转到我们应用的最新部分

时间:2018-10-09 17:14:27

标签: javascript angularjs angular typescript protractor

我们正在将应用程序从AngularJS升级到Angular。

我正在尝试创建一些测试,这些测试从该应用程序的AngularJS版本开始,并导航到该应用程序的Angular最新版本中的管理应用程序。以下是我要运行的测试。

describe('Admin App - Create Users', () => {
      beforeAll(async() => {
        await loginPage.login(companyUser, companyUserPwd)
        await common.navigationOpenByClick()
        await navPage.navigateToApp(AppParams.apps.admin.navLink)
        await admin.navigateAdmin('Users')
      })

      afterAll(async() => {
        await common.signOut()
      })

      _.forEach(CommonStrings.Strings.differentStrings, firstName => {
        it(`Create a New User First Name - ${firstName}`, async() => {
          await admin.createNewUser({
            userConfig: {
              firstName
            },
            clickSave: false
          })
          expect(admin.newUserAcceptBtn.getAttribute('disabled')).toBe(`true`)
          await admin.newUserCancelBtn.click()
        })
      })
}

beforeEach()中,我导航到管理应用程序,然后单击Users链接以转到管理应用程序中的该部分。问题在于它永远不会单击Users部分,而会引发以下错误:

Failed: Error while waiting for Protractor to sync with the page: "both angularJS testability and angular testability are undefined. This could be either because this is a non-angular page or because your test involves client-side navigation, which can interfere with Protractor's bootstrapping. See http://git.io/v4gXM for details"

因此,我单击了其中的链接,他们讨论了这种情况的原因是这种情况的重定向。因此,我在await navPage.navigateToApp()的{​​{1}}行之后尝试了以下方法。我还尝试了错误中提到的该故障单中的一些建议,但没有一个有用。

beforeEach()可以解决上述错误,但是我遇到了我的protractor.config文件中的browser.sleep()

allScriptsTimeout没有帮助

browser.refresh()这有助于消除错误,但是我遇到了browser.wait(EC.urlContains('end of link to the admin application'))

只是想知道我还能尝试什么来使该测试套件正常工作?

1 个答案:

答案 0 :(得分:0)

我通过在beforeEach()中做两件事来解决此问题 首先,登录到应用程序后,通过执行await browser.get('/areaoftheapplication')直接导航到所需程序部分 然后在那之后,我做一个await browser.waitForAngularEnabled(false)并且它起作用了。

    beforeAll(async () => {
        await loginPage.login(companyUser, companyUserPwd)
        await browser.get('v2/admin')
        await browser.waitForAngularEnabled(false)
    })