赛普拉斯-找不到表格元素

时间:2019-11-18 11:45:41

标签: jquery cypress

尊敬的stackoverflow成员, 我在cypress.io中测试我们的网页时遇到问题 我在jquery中使用$()。each()函数进行迭代,并尝试在表行中查找特定元素,还尝试使其变为“突出显示”或“选中”。 疯狂的事情是,当我尝试诸如以下条件部分时:

let number = $("#idOfSomething").text(); // Here i store the text from a dynamic label
                                         // which get its value from db  

if( Cypress.$(this).find('td:eq(1):contains("' + number+ '")').length > 0 ){
  // nothing found 
}

--------------或------------------

else if (Cypress.$(this).find('td:eq(1)').text() == number ){
// nothing found
}

但是,如果我尝试将值放在条件部分“硬编码”中,那么它将找到它

 if (Cypress.$(this).find('td:eq(1)').text() == "xy123" ){
    cy.log(number)  // prints "xy123"
    }

那是为什么???


另一件事是,当我尝试使用相同的函数遍历同一张表时 并且表格长于一页,然后使用此功能向下滚动到表格底部:

cy.get("#myTable").scrollTo("bottomLeft");

它遍历每个元素时, 如果在功能向下滚动之前首先不在屏幕上,则找不到该元素。 我的意思是,如果我在条件部分输入类似“ 1”的数字:

if(Cypress.$(this).find('td:eq(1)').text() == 1 ){
// here it finds the entry 1 in the table, because it is at the first page directly,

//但可以说是类型50而不是1->现在屏幕上没有显示50。    //赛普拉斯向下滚动...我在屏幕上看到数字50,但是赛普拉斯WONT看到了它。 }

我也尝试单击表格标题,以使数字得到DESC ...因此首先是50 ...都不起作用。 我也尝试通过偏移xy..wont向下滚动到底部。

1 个答案:

答案 0 :(得分:0)

对于有相同问题的任何人->

只需使用像这样的赛普拉斯内置函数即可:

cy.contains(yourVariableName).scrollIntoView().click();

这里对柏树说-> 首先:查看整个DOM并找到此元素 第二:滚动到该元素(如果不在视图中) 第三:点击该元素

FYI:使用此功能...您不必逐步向下滚动即可找到该元素。 您也不必检查是否也有滚动条。

完成这些步骤后,您可以执行任何操作。

祝你愉快