UnhandledPromiseRejectionWarning: TypeError: driver.controlFlow не является функцией - PullRequest
0 голосов
/ 17 декабря 2018

Я использую транспортир для угловых испытаний автоматизации.Если вы хотите использовать async await, вы должны отключить поток управления.Итак, в моем protractor.conf.js я установил SELENIUM_PROMISE_MANAGER: false.Разве это не распознано или я что-то забыл?

describe('As registarar, I can open a new client in 1G1P', function(){

    private const SSIN_UNDER_TEST = "03091011333";

    beforeEach(async function(){
        browser.waitForAngularEnabled(false);

        const loginPage = new KeyCloak();

        await browser.get('http://localhost:4200/1G1P/home');
        await browser.sleep(1000);
        await loginPage.clickLoginButton('AlisonColquhoun');
    });

    it('does not exist in eyouth', async() => {
        const homePage = new HomePage();

        browser.waitForAngularEnabled(true);
        await browser.sleep(2000);
        await homePage.openKszAccordion();
        await homePage.ssinSearchUser(SSIN_UNDER_TEST);
       const element = await homePage.firstKszSearchResult;
       const isPresent = await element.isDisplayed();
       expect(isPresent).toBeTruthy();
        await homePage.selectFirstSearchResult();
    });
    });

Это мой тест.

И объект страницы.Я довольно новичок в концепции объектной модели страницы в машинописи.Просто к взаимодействию со страницей ничего не утверждает.Должен ли я вернуть обещания?

export class HomePage {

  private _firstNameResult: ElementFinder = $('tbody tr:nth-child(1) td:nth-child(1)');
  private _lastNameResult: ElementFinder = $('tbody tr:nth-child(1) td:nth-child(2)');

  private _ksz_accordion = $('#' + Element.ACCORDION_KSZ_SEARCH_FORM);

  private _firstKszSearchResult = $(TAG.KSZ_SEARCH_TABLE + ' button');

  private searchButton = $('#' + Element.KSZ_SEARCH_BUTTON);
  private _firstNameInput = $('#' + Element.FIRSTNAME_SEARCH_INPUT);
  private _lastNameInput = $('#' + Element.LASTNAME_SEARCH_INPUT);
  private _birthDateInput = $('#' + Element.BIRTH_DATE_SEARCH_INPUT);
  private _ssinInput = $('#' + Element.SSIN_SEARCH_INPUT);

  get firstKszSearchResult(): WebElementPromise {
      return this._firstKszSearchResult.getWebElement();
  }

  public async phoneticSearchUser(firstName: string, lastName: string, birthDate: string){
      await this._firstNameInput.sendKeys(firstName);
      await this._lastNameInput.sendKeys(lastName);
      await this._birthDateInput.sendKeys(birthDate);

      this.searchButton.click();
  }

  public openKszAccordion(){
    return this._ksz_accordion.click();
  }

  public async ssinSearchUser(ssin: string){
    await this._ssinInput.sendKeys(ssin);

    this.searchButton.click();
  }

  public selectFirstSearchResult(){
    this._firstKszSearchResult.click();
  }
}

Мой конфиг транспортира, с версией 5.3.0

    const { SpecReporter } = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
    SELENIUM_PROMISE_MANAGER: false,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
    browser.driver.manage().window().maximize();
  },
  suites: { //run with e.g. --suite=carerequest or --suite=carerequest,home
    carerequest: './src/tests/carerequest/*.ts',
    home: './src/tests/home/*.ts',
    login: './src/tests/login/*.ts'
  }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...