Cypress 等待 table 加载
Cypress wait for table to load
我正在尝试测试并单击在输入组件中键入文本后出现的 table 行。
table 在延迟后加载(在从外部 API 获得响应后)。什么是使用等待直到加载特定元素的超时:
cy.get('[data-cy=searchBar]').type("Name")
cy.get('[data-cy=dataTable]').get('tbody').contains("td", "Result of name search", {timeout: 15000}).click()
所以赛普拉斯一直等到有给定值的行,但我更改的值并不总是相同的,所以有没有办法做与上面完全相同的事情,但在 table 之后选择第二行负载? (默认情况下 table 中没有项目)
我试过用这个:
cy.get('[data-cy=searchBar]').type("Name")
cy.get('[data-cy=dataTable]').get('tbody').get("tr").eq(2, {timeout: 15000}).click()
但似乎赛普拉斯在检查了第二个未通过测试的 tr
后加载了 table。
Cypress 要求参数值在 quotation marks 中,如果您确切知道您会发现的文本,我建议采用以下对我有用的方法:
cy.get('[data-cy="searchBar"]').type("Name")
cy.contains('[data-cy="dataTable"] td', "Result of name search")
.should('be.visible')
.click()
确保 cypress 等待超时的一种方法是在 cy.get()
内添加 tr 的第 n 个位置,例如:
cy.get('[data-cy=dataTable] > tbody > tr:nth-child(3)', {timeout: 15000}).click()
见,可以加一个should()
检查行长
cy.get('[data-cy=dataTable]')
.find('tbody tr') // ignore thead rows
.should('have.length', 3) // retries above cy.find() until true
.eq(2)
.click()
我不确定您是要单击行 (tr
) 还是单元格 (td
)。查看您的第一个示例(有效的示例),它是您要单击的单元格。
因此您可以添加单元格选择器
cy.get('[data-cy=dataTable]')
.find('tbody tr') // ignore thead rows
.should('have.length', 3) // retries above cy.find() until true
.eq(2) // take 3rd row
.find('td').eq(5) // take 6th cell
.click()
我正在尝试测试并单击在输入组件中键入文本后出现的 table 行。 table 在延迟后加载(在从外部 API 获得响应后)。什么是使用等待直到加载特定元素的超时:
cy.get('[data-cy=searchBar]').type("Name")
cy.get('[data-cy=dataTable]').get('tbody').contains("td", "Result of name search", {timeout: 15000}).click()
所以赛普拉斯一直等到有给定值的行,但我更改的值并不总是相同的,所以有没有办法做与上面完全相同的事情,但在 table 之后选择第二行负载? (默认情况下 table 中没有项目)
我试过用这个:
cy.get('[data-cy=searchBar]').type("Name")
cy.get('[data-cy=dataTable]').get('tbody').get("tr").eq(2, {timeout: 15000}).click()
但似乎赛普拉斯在检查了第二个未通过测试的 tr
后加载了 table。
Cypress 要求参数值在 quotation marks 中,如果您确切知道您会发现的文本,我建议采用以下对我有用的方法:
cy.get('[data-cy="searchBar"]').type("Name")
cy.contains('[data-cy="dataTable"] td', "Result of name search")
.should('be.visible')
.click()
确保 cypress 等待超时的一种方法是在 cy.get()
内添加 tr 的第 n 个位置,例如:
cy.get('[data-cy=dataTable] > tbody > tr:nth-child(3)', {timeout: 15000}).click()
见should()
检查行长
cy.get('[data-cy=dataTable]')
.find('tbody tr') // ignore thead rows
.should('have.length', 3) // retries above cy.find() until true
.eq(2)
.click()
我不确定您是要单击行 (tr
) 还是单元格 (td
)。查看您的第一个示例(有效的示例),它是您要单击的单元格。
因此您可以添加单元格选择器
cy.get('[data-cy=dataTable]')
.find('tbody tr') // ignore thead rows
.should('have.length', 3) // retries above cy.find() until true
.eq(2) // take 3rd row
.find('td').eq(5) // take 6th cell
.click()