尊敬的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向下滚动到底部。
答案 0 :(得分:0)
对于有相同问题的任何人->
只需使用像这样的赛普拉斯内置函数即可:
cy.contains(yourVariableName).scrollIntoView().click();
这里对柏树说-> 首先:查看整个DOM并找到此元素 第二:滚动到该元素(如果不在视图中) 第三:点击该元素
FYI:使用此功能...您不必逐步向下滚动即可找到该元素。 您也不必检查是否也有滚动条。
完成这些步骤后,您可以执行任何操作。
祝你愉快