Я новичок в Nightwatch.js и JavaScript в целом. Я пытаюсь сделать тест, который будет проверять наличие всех книг из файла JSON на соответствующей веб-странице. Кроме того, если на этой странице нет книг, я хочу проверить, присутствует ли текст "Нет продуктов в категории".
Я создал страницу с этой командой:
var books = require('../data/books.json')
var x = '';
module.exports = {
elements: {
productList: {
selector: '#product-list',
locateStrategy: 'css selector'
}
},
commands: [{
checkBooks: function () {
this.api
.elements('css selector', this.elements.productList.selector, function (result){
for (i in books.biographies) {
x = books.biographies[i].title;
for (j in books.biographies.title) {
x = books.biographies[i].title[j];
}
}
if (result.status > 0) {
console.log(j);
} else {
this.assert.containsText('#product-list', 'There are no products in the category');
}
})
}
}]
}
но тест всегда терпит неудачу, потому что он ожидает, что страница будет пустой.
Вот пример моих данных JSON:
"biographies":[
{
"title":"The Story of my Life",
"author":"Graham Peterson",
"publisher":"Mirabilis",
"ISBN":"########",
"price":"#.##"
},
{
"title":"Clear Waters Around Me",
"author":"Penny Wize",
"publisher":"Mirabilis",
"ISBN":"#########",
"price":"##.##"
}
]
Я был бы признателен за любую помощь. Спасибо.
ура
После некоторого вовлечения кода и множества исследований я наконец нашел решение для этого.
checkBiographies: function() {
this.api
.elements('css selector', this.elements.error.selector, function (result) {
if (result.value.length > 0) {
this.assert.cssClassPresent('#product-list > [class=err]', 'err');
console.log('No products!')
} else {
var x = '';
for (i in books.biographies) {
x += books.biographies[i].title;
x += "\n";
}
console.log(x);
}
})
}
В принципе, ранее я проверял двойной вложенный массив внутри JSON файла. Я исправил это и только что изменил условия. Теперь я сначала проверяю, присутствует ли на странице класс ошибок, а затем, если он не присутствует, я делаю сравнение.
Надеюсь, это поможет кому-то в будущем.
ура