Cucumber Protractor - Проблемы с тайм-аутом страницы для угловых и неугловых приложений - PullRequest
0 голосов
/ 01 мая 2018

Мы находимся в процессе реализации подхода BDD и используем транспортир для тестирования. Тестируемое приложение имеет как угловые, так и не угловые страницы. Страница входа не угловая, а домашняя страница угловая. Сценарий прекрасно работает на странице входа в систему, и когда он попадает в неугловую область, ничего не происходит (никаких действий не выполняется).

В чем может быть проблема?

StepDefinition.js

Given(/^User lands on Login$/, function () {
      var appUrl = properties.get('appUrl');
      return browser.driver.get('appUrl');
      browser.ignoreSynchronization = true;
});

When(/^User enters Username and Password$/, function () {
      xph.get('Username').sendKeys(username);
      return xph.get('Password').sendKeys('password');;
});

When(/^User Clicks Submit$/, function(){
      browser.executeScript("arguments[0].click();",xph.get('Login'))
      //return browser.sleep(7000);
      browser.ignoreSynchronization = false;
      browser.waitForAngular();
});

Then(/^User successfully logs$/, function() {
      var hString= xph.get('LogOut');
      hString.getText().then(function(text){expect(text).to.equal('LogOut');});
});

Then(/^User clicks Create Account$/, function () {
       browser.executeScript("arguments[0].click();",xph.get('CreateAcct'))
});

1 Ответ

0 голосов
/ 02 мая 2018

Две проблемы в вашем коде, попробуйте еще раз после исправления их следующим образом:

1) вы поставили browser.ignoreSynchronization = true позади return, это не имеет смысла.

Внутри browser.get(), он обнаружит, что начальная страница является угловой, за исключением того, чтобы поставить browser.ignoreSynchronization = true перед browser.get(), чтобы сказать транспортиру, что начальная страница не угловая.

Given(/^User lands on Login$/, function () {
      var appUrl = properties.get('appUrl');
      browser.ignoreSynchronization = true;
      return browser.driver.get('appUrl');
});

2) Вы должны возвращать объект, подобный обещанию, для каждого определения шага, в противном случае бегун приостановит определение этого шага до истечения времени ожидания.

waitForAngular() эквивалентен browser.ignoreSynchronization = false;, первый введен в более высокую версию транспортира, позже может работать транспортир более низкой и более высокой версии.

Почему вы не используете Protractor API xph.get('Login').click(), а используете Javascript DOM API для нажатия кнопки Submit.

When(/^User Clicks Submit$/, function(){
      return element(<locator of Submit button>).click().then(function(){
          return browser.ignoreSynchronization = false;
      }) 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...