首页 > 解决方案 > 如果使用赛普拉斯的 DOM 中不存在该元素,如何处理错误

问题描述

我想使用 for 循环动态获取文本,但在某些时候该元素可能不存在,并且 cypress 试图找到该元素并抛出错误。

与 selenium 一样,我们可以使用 list 来查找元素并可以处理它,但这里 cypress 试图在某个索引处查找动态元素,如果它不存在,则会引发错误。

    for(var i=1; i<40; i++){

      try{
     cy.get('tbody > :nth-child('+i+') > :nth-child(2)')
    .then(($elem) =>{

    var sum= $elem.text()

       cy.log('---',sum)

    })
}catch(err) {
        cy.log('error')
        break
      }

我也尝试使用 try catch 块,但它仍然没有进入 catch 块

任何帮助将非常感激

标签: javascripttestingautomationcypress

解决方案


假设 childrentbody是 rowstr和 cells td,否则您可以在下面修改我的代码。我会使用each()循环来执行此操作:

cy.get('tbody > tr').each(($tr, index) => {
  if ($tr.find('td').length >= 3) {
    let sum = $tr.find('td').eq(2).text();
    cy.log('row ' + index + ': ' + sum);
  } else {
    cy.log('row ' + index + ': Not found')
  }
});

推荐阅读