【发布时间】:2021-06-16 00:59:55
【问题描述】:
我正在编写一个测试用例,需要我重新加载页面N 次数,并比较其标题的值,如果该值不存在,则中断 while 循环而不会出现上升错误。
下面是一个演示程序,类似于我想要实现的那个。
/// <reference types='cypress' />
it("Visiting Google",function(){
var webUrl = 'https://html5test.com/'
cy.visit(webUrl)
var loop_iter = 0
while(loop_iter < 5)
{
cy.get('body:nth-child(2) div:nth-child(2) div.header h1:nth-child(1) > em:nth-child(2)').then(($text_data) =>{
if($text_data.text().contains('HTML123'))
{
cy.log(" --> ITERATION = ",loop_iter)
cy.reload()
}
else
{
cy.log("Unknown website")
loop_iter = 10
}
})
loop_iter += 1
}
})
我需要一种方法在执行 else 部分时从 while 循环中中断,而不会出现任何错误。
if 条件为 false 时返回 AssertionError,这种情况下应该执行 else 部分。
【问题讨论】:
-
你需要使用递归,至少Cypress给出的通用模式是这样的。
-
看看cypress-recurse。你的“commandsFn”是
() => cy.title(),“checkFn”是($text_data) => $text_data.includes('HTML')。我还不确定在哪里适合cy.reload()。 -
这是一个演示示例,我真的很想使用
const $val = cy.get()并比较 $val 是否包含字符串,如果失败则应该退出 while -
您应该修改问题以表明您真正想要的是什么。 while 循环也不起作用,有很多关于它的信息(一些链接在这里)。
标签: javascript jquery testing automation cypress