Как сравнить полученный текст с моим ожидаемым текстом? - PullRequest
0 голосов
/ 21 января 2019

Я хочу сравнить полученный текст из раскрывающегося списка с моим ожидаемым текстом.Я не уверен, как это сделать, так как я новичок в транспортире с фреймворком огурца. Нужна помощь!

  DOM:
  <select id="dropdown1">
  <option value="0" selected="selected">Select training program using 
  Index</option>
  <option value="1">Selenium</option>
  <option value="2">Appium</option>
   <option value="3">UFT/QTP</option>
  <option value="4">Loadrunner</option>
  </select>

Я пробовал приведенный ниже код, но получаю эту ошибку:

AssertionError: ожидается, что {Object (browser_, затем, ...)} будет равен 'Выберите программу обучения, используяIndex '

   Then(/^User clicks the drop down$/, async() => {
   var expected = ['Select training program using Index', 'Selenium', 
   'Appium','UFT/QTP','Loadrunner'];
   var els = element.all(by.id('dropdown1'))
   for (var i = 0; i < expected.length; ++i) {
   expect(els.get(i).getText()).equals(expected[i]); 
   console.log('' +'Steppassed'+ '');
   }
   });

Я ожидаю, что шаг будет пройден, как мои "ожидаемые", и значения выпадающего меню совпадают.


Предложение, которое вы предоставили, работает, но,когда я изменяю один из моих ожидаемых, он должен потерпеть неудачу. Для этого я предусмотрел цикл if-else, но всегда показывает, что шаг пройден. В приведенном ниже примере я изменил «Appium» на «A».

Ниже приведен мой код. Пожалуйста, помогите мне с циклом:

 Then(/^User clicks the drop down$/, async() => {
 var expected = ['Select training program using Index', 'Selenium', 
 'A','UFT/QTP','Loadrunner'];
  var els = element.all(by.id('dropdown1'))
  for (var i = 0; i < expected.length; ++i) {
 if(expect(els.get(i).getText()).to.eventually.equals(expected[i])){
 console.log('' +'Steppassed'+ '');
 }else{
 console.log('' +'Stepfailed'+ '');
  }

   }
   });

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Поскольку вы объявляете эту функцию асинхронной, я предполагаю, что для SELENIUM_PROMISE_MANAGER установлено значение false в вашей конфигурации. Исходя из этого, вы можете использовать ожидание, чтобы упростить ожидание заявления.

Кроме того, похоже, что вы пытаетесь использовать element.all в самом раскрывающемся списке, который должен возвращать только один элемент (сам раскрывающийся список). Я считаю, что вы хотите вместо этого найти раскрывающийся список, а затем получить все элементы параметров.

Then(/^User clicks the drop down$/, async () => {
    var expected = ['Select training program using Index', 'Selenium',
        'A', 'UFT/QTP', 'Loadrunner'];
    var dropdown = element(by.id('dropdown1'));
    var dropdownOptions = dropdown.all(by.tagName('option'));

    for (var i = 0; i < expected.length; ++i) {
        let optionText = await dropdownOptions[i].getText();
        //second option to try
        //let optionText = await dropdownOptions[i].getAttribute('value');

        expect(optionText).toEqual(expected[i])
    }
});

Примечание. Этот подход будет работать только при условии, что порядок текста в раскрывающемся списке совпадает с используемым массивом.

0 голосов
/ 21 января 2019

getText() возвращает обещание, поэтому:

expect(els.get(i).getText()).to.eventually.equals(expected[i]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...