Моя пользовательская команда nightwatch.js не работает - PullRequest
0 голосов
/ 30 апреля 2019

Ниже приведен отрывок из моего тестового скрипта nightwatch.js, который я хотел бы создать в специальной команде.

Тестовый код:

"Page 1 Transission SEO Crawl paths are correct": function (browser) {
 // Transmission Solr Query Result Array
  var transmissionArray = ryanlinkstransmissionpage.Transmission.filter(val => typeof val === "string");
    transmissionArray.sort();
      // Transmission Facet Navigation
      browser.elements('xpath', '//a[contains(@href,"gearbox")]', function (transmissionFacetEntry) {
        var transmissionPageElement = [];
          transmissionFacetEntry.value.map(function(element) {
            browser.elementIdAttribute(element.ELEMENT, 'innerText', function(transmissionFacetEntryResult) {
              transmissionPageElement.push(transmissionFacetEntryResult.value);
                if (transmissionFacetEntry.value.length === transmissionPageElement.length) {
                  if (JSON.stringify(transmissionArray) === JSON.stringify(transmissionPageElement)) {
                    console.log("they are the same", transmissionArray, transmissionPageElement);
                    return true;
                  } else {
                      console.log("they are not the same", transmissionArray, transmissionPageElement);
                      return false;
                    }
                }
            });
          });
      });
},

Когда я запускаю свой тестовый сценарий с этим включенным, тест проходит успешно и проходит.

Когда я «конвертирую» это впользовательская команда, она выглядит следующим образом:

exports.command = function(ryanlinksproductionyearpage) {
  var yearArray = ryanlinksproductionyearpage.ProductionYear.filter(val => typeof val === "string");
    yearArray.sort();
      this
        .elements('xpath', '//a[contains(@href,"year")]', function (yearFacetEntry) {
          var yearPageElement = [];
            yearFacetEntry.value.map(function(element) {
              this.elementIdAttribute(element.ELEMENT, 'innerText', function(yearFacetEntryResult) {
                yearPageElement.push(yearFacetEntryResult.value);
                  if (yearFacetEntry.value.length === yearPageElement.length) {
                    if (JSON.stringify(yearArray) === JSON.stringify(yearPageElement)) {
                      console.log("they are the same", yearArray, yearPageElement);
                        return true;
                    } 
                          else {
                            console.log("they are not the same", yearArray, yearPageElement);
                              return false;
                          }
                  }
              });
            });
          }); 
  return this;
};

(обратите внимание, что ryanlinksproductionyearpage ссылается на другую часть тестового скрипта).

Мой тестовый скрипттеперь выглядит так:

"Page 1 Year Plate SEO Crawl paths are correct": function (browser) {

   browser.cars_for_sale.make_level.ryan_links.yearPlateArrayComparison(ryanlinksproductionyearpage);
},

Однако теперь я получаю следующую ошибку:

 ✖ TypeError: this.elementIdAttribute is not a function

Я упустил что-то очевидное / основное в моем собственном командном сценарии, или это специально elementIdAttribute проблема?

Любая помощь будет принята с благодарностью.

Спасибо

...