Javascript 在我的应用程序中,我有一个以表格格式显示的请求编号(字符串)列表,它有分页功能,所以有多页目录
我有一个for循环来迭代页面,并使用每个块来迭代该页面表中的请求号。当表中的request no与我的请求匹配时,它应该选择并退出循环。我被困在这里,因为我无法打破这个循环Javascript 在我的应用程序中,我有一个以表格格式显示的请求编号(字符串)列表,它有分页功能,所以有多页目录,javascript,cypress,Javascript,Cypress,我有一个for循环来迭代页面,并使用每个块来迭代该页面表中的请求号。当表中的request no与我的请求匹配时,它应该选择并退出循环。我被困在这里,因为我无法打破这个循环 M_SelectRequestNoThen(request) { let exit = true; let i; cy.wait(500); this.E_TotalPages() .invoke("text") .then((text) =&g
M_SelectRequestNoThen(request) {
let exit = true;
let i;
cy.wait(500);
this.E_TotalPages()
.invoke("text")
.then((text) => {
let total = text;
cy.log("totalpages", total);
for (i = 0; i < total; i++) {
cy.log("i inside while", i);
this.E_RequestRows().each(($el, $index) => {
cy.wrap($el)
.invoke("text")
.then((text) => {
cy.log("text", text);
if (text.trim().includes(request)) {
this.E_RequestSelect(request).click();
exit = false;
}
});
});
i++;
if (exit) {
this.E_NextButton().click();
} else {
break;
}
}
});
}
M\u选择RequestNothen(请求){
让exit=true;
让我;
cy.wait(500);
此.E_TotalPages()
.invoke(“文本”)
。然后((文本)=>{
让总数=文本;
cy.log(“总页数”,总计);
对于(i=0;i{
cy.wrap($el)
.invoke(“文本”)
。然后((文本)=>{
cy.log(“文本”,文本);
if(text.trim()包括(请求)){
此.E_请求选择(请求)。单击();
退出=假;
}
});
});
i++;
如果(退出){
此.E_NextButton()单击();
}否则{
打破
}
}
});
}
因为我不能使用闯入然后阻塞;使用boolean exit,但即使在then块之外也不会得到更新值。所以,即使找到我的请求,它也会导航到下一页。那么,在满足“if(text.trim().includes(request))”条件之后,如何中断for循环呢?这里存在一些控制流问题,主要是您试图在异步进程内部中断。但是,我认为您不需要这种复杂性,可以更好地利用测试框架来做一些更简单的事情(可能有点不合适,因为我不确定您在测试什么):
这里有一些关于控制流的问题,主要是您试图在一个异步系统中打破控制流。但是,我认为您不需要这种复杂性,可以更好地利用测试框架来做一些更简单的事情(可能有点不合适,因为我不确定您在测试什么):
我的情况是我有4页的列表。如果在第一页中找不到我的字符串,则必须单击下一页。以这种方式,它必须迭代列表和页面,直到找到字符串,然后退出。如果它是单页场景,我的每个块都可以工作。如果在整个第一页中找不到字符串,我必须在每个块之外进行检查,以转到下一页或中断循环。我的情况是,我有4页列表。如果在第一页中找不到我的字符串,则必须单击下一页。以这种方式,它必须迭代列表和页面,直到找到字符串,然后退出。如果它是单页场景,我的每个块都可以工作。如果在整个第一页中找不到字符串,我必须在每个块之外进行检查,以转到下一页或中断循环。Thx。我尝试了您提到的代码。如果($el.contains(request))**不能直接工作,它说contains不是一个函数。我必须使用“.invoke”(“text”)。然后((text)=>{**'也不能在每个块中使用break,正如您所提到的,它会抛出语法错误。我的场景是我有4页列表。如果在第一页中找不到我的字符串,它必须单击下一页。以这种方式,它必须迭代列表和页面,直到找到字符串,然后退出。如果在整个第一页中找不到字符串,如何我可以在每个块外检查以进入下一页或中断循环吗?Thx。我尝试了您提到的代码。如果($el.contains(request))**不能直接工作,并且它说contains不是函数。我必须使用“.invoke”(“text”)。然后((text)=>{**'也不能在每个块中使用break,正如您所提到的,它会抛出语法错误。我的场景是我有4页列表。如果在第一页中找不到我的字符串,它必须单击下一页。以这种方式,它必须迭代列表和页面,直到找到字符串,然后退出。如果在整个第一页中找不到字符串,如何我是否可以在每个街区外检查以进入下一页或打破循环?
this.E_RequestRows().each(($el, $index) => {
if ($el.contains(request)) {
this.E_RequestSelect(request).click();
break; // assuming you want to stop this iteration when you find your element
}
});