我的javacript/cypress代码有一个小问题。
我尝试做的是,如果用户点击一个按钮(在下面的html中是一个<a>
链接),那么等待类selectionAdded从带有<a>
链接的dom中删除。
让我来告诉你我的意思。这是按钮:
<a class="oddsBoostedPrice button__bet eventSelection--link" "="">
单击按钮,将出现一个类,简称为.selectionAdded(将前端表示为悬停在按钮上的“Added”文本)。
<a class="oddsBoostedPrice button__bet eventSelection--link selectionAdded" "="">
过了一会儿,按钮上的“Added”悬停消失了,元素现在看起来像这样(.selected
类被添加了,但更重要的是,它回到了可点击状态,只有当.selectionAdded
从dom中删除时才会发生)。
<a class="oddsBoostedPrice button__bet eventSelection--link selected" "="">
因此,基本上我下面的逻辑基本上是声明找到一个尚未选择的元素,单击它,从循环中中断,然后等待元素不包含类selectionAdded(以确保按钮处于可单击状态,因为稍后我将单击同一按钮)。
const oddsSelectionElements = new OddsSelectionElements();
When ("User selects an available bet bundle selection", () => {
oddsSelectionElements.oddsButton().each((element, index) => {
if (element.not("have.class", "selected")) {
oddsSelectionElements.selectionName().eq(index).invoke("text").then(formatters.formatString).as("selectionName");
cy.wrap(element).click();
return false;
}
})
oddsSelectionElements.oddsButton().not("have.class", "selectionAdded");
})
类奇数选择元素
class OddsSelectionElements {
oddsButton() {
return cy.get('.button__bet')
}
}
导出默认奇数选择元素
我的问题是,我的测试是flakey,它看起来像是因为有时在测试后期,它在按钮不处于可单击状态时单击按钮,我相信这是因为它没有等到按钮没有selectionAdded
类。
要解决这个问题需要做些什么?
3条答案
按热度按时间57hvy0tb1#
尝试像这样检查元素的css
oaxa6hgo2#
应向Cypress.not()命令传递选择器
您使用它的方式不是有效的语法,但不幸的是不会给予错误
在你的测试中
hsvhsicv3#
好的,要解决这个问题,你可以添加超时。这可以是一个命令的本地超时,也可以是全局超时。默认情况下,cypress的超时为4秒
要在本地应用超时,可以执行以下操作:
或者,如果要全局增加所有命令的超时,请转到
cypress.json
并添加:另外,请更改: