我有一张table,如下图所示。我尝试检查复选框有'ST - '文本,然后删除它们。
下面是我的代码:
cy.get('td').invoke('text').then(text => {
//1st IF
if (text !== 'No data available') {
let hasAuto = false;
let tableReport = cy.get('#tableA')
let rpBN = [];
tableReport.find('tbody tr').each(($row) => {
const thirdColumnText = $row.find('td:nth-child(3)').text().trim();
rpBN.push(thirdColumnText)
//2nd IF
if (rpBN.some(item => thirdColumnText.includes('ST - '))) {
hasAuto = true;
const checkbox = $row.find('input[type="checkbox"]');
checkbox.trigger('click');
}
})
cy.log('hasAuto = ' + hasAuto)
//3rd IF
if (hasAuto) {
//Click Delete
cy.get('#deleteBtn').click()
//Confirmation popup open -> click [Yes] button
cy.get('#confimeP').contains('Yes').click()
}
}
})
但是在输出第二个IF hasAuto 后变成false,第三个IF没有运行。
3条答案
按热度按时间ifsvaxew1#
一个好的测试不需要使用任何
if()
。您将表设置为所示的状态,那么测试将类似于
jdzmm42g2#
因为我们正在处理sync和async cypress方法,所以我建议将最后一个
if
Package 成一个then
:hsgswve43#
我认为'includes'关键字需要与您指定的关键字相同的单词,因此您可以尝试使用'indexOf'