无法使用下面的 else if 条件并始终坚持使用 if
cy.get("#result").iframeOnload().find(".text-error").invoke('text').as('iframeText');
cy.get('@iframeText').then((iframeText) => {
if(iframeText === expectedFailText){
ResultPage
.getResultErrorMessage()
.should("have.text", expectedFailText);
}
else if(expectedPassText){
ResultPage
.getResultPassedMessage()
.should("have.text", expectedPassText);
}
});
Run Code Online (Sandbox Code Playgroud)
这是如何不编写测试的一个很好的例子!
您只能得到一个结果,因此您是否打算重复运行它,希望涵盖这两种结果if()
并else()
获得随机结果?
我建议您首先分成两个测试,并分别设置先决条件给您passText
和。failText
从技术角度来说,您不能将别名与<iframe>
. 这是因为 iframe 具有contentWindow
并且别名将尝试重新查询它,但会失败。
无论里面有什么.iframeOnload()
,删除它并使用该cypress-iframe
插件。使用它首先确定 iframe 已加载,然后在<iframe>
范围内运行正常测试。
一个粗略的例子
it('tests the pass text', () => {
// precursor condition - setup for pass
cy.enter('#my-iframe').then(getBody => {
getBody().find(".text-error").invoke('text')
.should('have.text', expectedPassText)
})
})
it('tests the fail text', () => {
// precursor condition - setup for fail
cy.enter('#my-iframe').then(getBody => {
getBody().find(".text-error").invoke('text')
.should('have.text', expectedFailText)
})
})
Run Code Online (Sandbox Code Playgroud)