это блок вызывается перед блоком beforeEach Jasmin - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблема с тем, что в моем блоке beforeEach я перехожу на определенный URL-адрес перед началом блока it.Однако иногда блок it запускается до перехода блока beforeEach к URL-адресу.Это вызывает ошибку «Элемент не найден».Я попытался добавить готовый параметр, но безрезультатно.Любая помощь очень ценится

  describe('Asset Manager [PREP]', function () {
    beforeAll( async function() {
      await Login.login( LOGIN.VALID.ADMIN.USERNAME,LOGIN.VALID.ADMIN.PASSWORD );})   

     beforeEach( async function() {
       await browser.get( browser.baseUrl + 'asset_manager/import' );
     });

  for ( ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS ) {
   case_params( ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET] );
  }

  function case_params( ASSET ) {
    it('Upload: '+ ASSET.UPLOAD_NAME + ' Asset' , async function () {
      let FTP = ASSET_MANAGER.REGRESSION_PREP.FTP
      expect( await GlobalLayoutHeader.getAppNameFromHeader() ).toBe( 'Asset Manager' );
      var ImportAssets = AssetManager.ImportAssets;

      await ImportAssets.importFTPAsset(
                                    FTP.SERVER,
                                    FTP.USERNAME,
                                    FTP.PASSWORD,
                                    ASSET.FILE_PATH,
                                    ASSET.IMAGE_PATH,
                                    ASSET.UPLOAD_NAME + ' [RegressionPrep]',
                                    ASSET.DESCRIPTION,
                                  );
  });
};

1 Asset Manager [PREP]
   √ Upload: Black Panther Asset (3 secs)
   × Upload: Incredibles 2 Asset (0.587 sec)
      - Failed: No element found using locator: By(css selector, #import_type)

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Похоже, у вас может быть проблема с тем циклом, который вы используете.При переборе элементов с использованием for in loop значение из ASSET_MANAGER.REGRESSION_PREP.ASSETS должно быть уже сохранено в переменной ASSETS.Поэтому, когда вы звоните

for(let ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS){
    ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET]
}

Вы, по сути, звоните

for(let i =0; i < ASSET_MANAGER.REGRESSION_PREP.ASSETS.length;i++){
    ASSET_MANAGER.REGRESSION_PREP.ASSETS[ASSET_MANAGER.REGRESSION_PREP.ASSETS[i]]
}

То же самое может быть достигнуто с помощью

for(let ASSET in ASSET_MANAGER.REGRESSION_PREP.ASSETS){
   ASSET
}

Однако это незначительная проблема синтаксиса, непричина вашей актуальной проблемы.В прошлом у меня были некоторые проблемы с асинхронными действиями в циклах, но у меня нет ясного понимания, почему именно.Тем не менее, вы могли бы попробовать изменить ваш for in на следующий и посмотреть, поможет ли это?

for (let i = 0; i < ASSET_MANAGER.REGRESSION_PREP.ASSETS.length; i++) {
    case_params(ASSET_MANAGER.REGRESSION_PREP.ASSETS[i]);
}
0 голосов
/ 28 февраля 2019

Вы проверяли, возможно, есть ошибки.Возможно это терпит неудачу.

beforeEach( async function(done) {
  try {
    await browser.get( browser.baseUrl + 'asset_manager/import' );
    done()
  } catch(e) {
    done.fail(e)
  }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...