Say*_*osh 3 javascript automated-tests reactjs cypress
所以,我有以下结构中的元素:
<div class="MuiBox-root" data-testid="all-events">
<ul ....>
<div class="MuiBox-root" data-testid="event">
<div class="MuiBox-root" data-testid="event">
<div class="MuiBox-root" data-testid="event">Run Code Online (Sandbox Code Playgroud)
现在,每个事件元素内都有以下结构:
<div class="MuiBox-root" data-testid="event">
<li .....>
<div class="MuiBox-root ....." data-testid="event-status">
<div> Text Value </div>
<div class="MuiBox-root ....." data-testid="event-name">
Run Code Online (Sandbox Code Playgroud)
因此,我要测试的是,如果元素事件状态为已完成或活动,则元素事件名称将出现。所以我使用的方法如下:
cy.get("[data-testid='events']").its("length").then((numEvents) => {
for (let i = 0; i < numEvents; i++) {
cy.get("[data-testid='event-status']").each((status, index) => {
if (index === i) {
if (isEventActive(status)) {
cy.get("[data-testid='event-name']").each((name, index) => {
if (index === i) {
cy.get(name).should("have.text", "some value");
}
});
} else {
cy.get("[data-testid='event-name']").each((name, index) => {
if (index === i) {
cy.get(name).should("not.exist");
}
});
}
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
上面的代码正在测试我想要测试的内容,但它非常混乱,欢迎任何更简单的方法。
小智 5
将 for 循环转换为.each(). .within()在事件上使用将允许内部get命令特定于事件,并且无需检查索引值。
cy.get("[data-testid='events']").each($event=> {
cy.wrap($event).within(() => {
cy.get("[data-testid='event-status']").each($status => {
if (isEventActive($status)) {
cy.get("[data-testid='event-name']").should("have.text", "some value");
}) else {
cy.get("[data-testid='event-name']").should("not.exist")
})
})
})
});
Run Code Online (Sandbox Code Playgroud)
也许这也会起作用。使用闭包将两个内部元素($status 和 $name)放入三元表达式中,并使用.should("satisfy", callbackFn)进行“非此即彼”检查。
cy.get("[data-testid='events']").each($event => {
cy.wrap($event).find("[data-testid='event-status']").then($status => {
cy.wrap($event).find("[data-testid='event-name']")
.should("satisfy", $name => isEventActive($status)
? $name.text() === "some value"
: $name.length === 0;
);
})
})
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6250 次 |
| 最近记录: |