Я пытаюсь проверить погоду, если между элементами страниц есть нужное ключевое слово store.
Например:
store keyword = "apple"
частьструктура страницы:
<tbody>
<tr>
<td class="store">
<img class="offer-store" ... alt="amazon store" .../></td>
<td ...
...</td>
</tr>
...
<tr>
<td class="store">
<img class="offer-store" ... alt="apple store" .../></td>
<td ...
...</td>
</tr>
</tbody>
У меня есть 3 товара, необходимо убедиться, что в каждом товаре есть магазин, содержащий ключевое слово магазина.
Один товар может иметь 10 страниц и иметь 10 магазинов в каждом.page.
Перейдите на страницу продукта и начните находить ключевое слово магазина.
Если я найду ключевое слово магазина во втором магазине на третьей странице, перейдите на другую страницу товара.
Моя стратегия:
for(var i = 0; i < 3; i++) // three product
{
//assume I can go to store page of a product here(using var i)
for(var j = 1; j < 10; j++) //search 10 store pages of the product
{
cy.get(".offer-store").each(($item)=>{
cy.get($item).its('context').invoke('attr','alt').then((store)=>{
if(store.indexOf('apple')!=-1)
cy.log("found store!!")
//send trigger to break cy.then, cy.each and a for loop
})
})
cy.get('.btn-group').contains('>').click({force: true})
//go to next page if not found in this page
}
}
Сначала я использую переменную в качестве триггера для выполнения команды прерывания.
Позже я знаю, что вы не можете изменить внешнюю переменную в качестве триггера.Мне нужно использовать cy.then () в конце cy.then () или cy.each () для выполнения дальнейших операций.
Я пытался использовать кроме () для проверки вместо if (), но он получит ошибку утверждения, когда не найдет ключевое слово в первом элементе (но я хочу найти следующий).И я также попытался сделать uncaught: исключение, чтобы игнорировать ошибку:
Cypress.on('uncaught:exception', (err, runnable) => {
return false
})
Я поместил этот код в cypress / support / commands.js, и он не работал.
Другойя попытался, чтобы вернуть значение как триггер в cy.then () / cy.each (), и я получил
CypressError: cy.then() failed because you are mixing up async and sync code.
Мой вопрос:
1.Как отправитьтриггер для прерывания цикла cy.then, cy.each и for в этом случае?
2.Как игнорировать ошибку подтверждения?