Ниже приведен отрывок из моего тестового скрипта 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 проблема?
Любая помощь будет принята с благодарностью.
Спасибо