点击后属性值从 false 变为 true 再变为 false。然后cypress就遇到了超时-

问题描述 投票:0回答:1

我有一张有很多部分的桌子。这些部分中有一个表格,表格的每一行都有一个复选框。单击该复选框后,以下属性“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))

cypress
1个回答
0
投票

据我所知,这并不太难。您想要检查某个元素的属性值,需要使用

.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);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.