Cypress 转到下一页,直到找到元素

Cypress 转到下一页,直到找到元素,cypress,Cypress,我正在使用Cypress进行自动测试。我试图在页面上找到一个产品并点击它。如果产品未显示在页面上,请转到下一个,直到找到为止。 我已经尝试了很多东西:while循环、each循环、simple cy.get,但它们都不起作用。谁能帮我解决这个问题 您将需要一个递归命令,其实现将取决于您的特定场景。没有一刀切的解决方案,但通常情况下会是这样的: 函数findElem(targetSelector){ //首先,我们需要查询一个容器(可以是表,也可以是通用项) //容器)。重要的是,此容器必须存在于

我正在使用Cypress进行自动测试。我试图在页面上找到一个产品并点击它。如果产品未显示在页面上,请转到下一个,直到找到为止。
我已经尝试了很多东西:while循环、each循环、simple cy.get,但它们都不起作用。谁能帮我解决这个问题

您将需要一个递归命令,其实现将取决于您的特定场景。没有一刀切的解决方案,但通常情况下会是这样的:

函数findElem(targetSelector){
//首先,我们需要查询一个容器(可以是表,也可以是通用项)
//容器)。重要的是,此容器必须存在于每个
//您将遍历的页面。
cy.get('.someContainer')。然后($container=>{
//同步查找目标元素,无论您想要什么
//例如,我使用一个属性选择器,但您可以做任何您想做的事情
//需要。
if($container.find(targetSelector.length){
返回true;
}否则{
返回false;
}
}).然后(找到=>{
如果(找到){
返回cy.log(`found elem“${targetSelector}`);
}否则{
//同步检查是否有下一页/表格
如果(Cypress.$('.nextPageButton')。长度){
//当知道有下一页时,使用cypress单击它
cy.get('.nextPageButton')。单击();
//在这里,断言下一页/表已加载,可能是由
//断言当前页/表已从DOM中删除
//然后,递归
返回findElem(targetSelector);
}否则{
抛出新错误(`在任何页面上找不到元素“${targetSelector}”);
}
}
});
}
它('test',()=>{
findElem(`[data id=“42”]`);
});
解决方案的关键是使用命令的组合来查询容器,并使用同步检查(使用jQuery或其他方法)来查找实际的元素。请访问了解更多信息

对于具体的实现,您可以参考我对类似问题的回答