如何在Cypress中实现条件判断?先验证数据表再点击复选框
解决Cypress中表格填充后再点击全选的条件执行问题
你原来的代码没法正常运行,核心原因是Cypress的命令是异步的,cy.get(...)返回的不是实际的行数,而是一个命令链对象,直接放在if条件里永远是true——因为对象本身是真值,但此时实际的行数判断还没执行。
下面是两种可行的解决方案:
方案一:获取行数后做判断
通过.then()等待异步命令完成,拿到实际的行数再执行条件逻辑:
cy.get('.p-datatable-table').find('tr').its('length').then(rowCount => { // 这里根据你的实际场景调整条件,如果表头也算一行,那要判断rowCount > 1 if (rowCount > 0) { cy.get('.select-all-boxes').click(); } });
方案二:直接定位数据行(更精准)
如果你的表格有表头和数据行的区分,比如数据行在tbody里,可以直接定位数据行,避免把表头算进去:
cy.get('.p-datatable-table tbody tr').then($dataRows => { if ($dataRows.length > 0) { cy.get('.select-all-boxes').click(); } });
关键说明
Cypress的命令是按队列异步执行的,同步的if语句会先于Cypress命令运行,所以必须用.then()回调来获取异步执行后的结果,再做条件判断。
内容的提问来源于stack exchange,提问作者OLA
相关产品推荐
相关产品推荐

