我有一张有很多部分的桌子。这些部分中有一个表格,表格的每一行都有一个复选框。单击该复选框后,以下属性“data-e2e-table-loading”将从 false 更改为 true,并在重新加载后返回到 false: 单击复选框之前:
<table data-e2e-table="section3" data-e2e-table-loading="false">
单击复选框后不久:
<table data-e2e-table="section3" data-e2e-table-loading="true">
然后重新加载后又回到 false:
<table data-e2e-table="section3" data-e2e-table-loading="false">
我试图抓住这个,所以它等待'data-e2e-table-loading =“false”'但我的代码并不总是工作,无论我尝试什么。在此示例中,我尝试使用以下包:cy.waitUntil
cy.section(this.tableName).within(() => {
cy.waitUntil(() => cy.get('[data-e2e-table-loading]', { timeout: 8000 })
.should('be.lengthOf', 1)
.invoke('attr', 'data-e2e-table-loading')
.then((load) => Boolean(load)));
cy.get('[data-e2e-table-loading="false"]').should('be.lengthOf', 1);
});
但是失败了:
获取[数据-e2e-table-loading =“假”] assertexpected { Object (length, prevObject, ...) } 的长度为 1 但得到 0
我认为“.should('be.lengthOf', 1)”会等到这个为真。但如果这些部分重新加载,这就完全关闭了。
我也尝试过这个:
cy.get('[data-e2e-table-loading]').should('not.have.value',true);
cy.get('[data-e2e-table-loading]').should('have.value',false);
不起作用!
>get[data-e2e-table-loading]
>assertexpected <table.MuiTable-root.css-1dzuc3y> not to have value true
>get[data-e2e-table-loading]
>assertexpected <table.MuiTable-root.css-1dzuc3y> to have value false, but the value was '' FAIL Timout.
感谢您的观看。 ((赛普拉斯 13.14.1;Chrome))
据我所知,这并不太难。您想要检查某个元素的属性值,需要使用
.invoke('attr', 'data-e2e-table-loading')
命令。
cy.get('[data-e2e-table-loading]')
.invoke('attr', 'data-e2e-table-loading')
.should('eq', true);
cy.get('[data-e2e-table-loading]')
.invoke('attr', 'data-e2e-table-loading')
.should('eq', false);