尝试单击基于具有启用/禁用状态的另一个元素的按钮。由于某种原因,我禁用的检查代码不起作用,并且它总是以另一个语句结束(“找不到现有路由”),即使 UI 启用了选择按钮。
cy.get('voyage-suggested-routes')
.find('button.selectButton')
.then(($routes) => {
if ($routes.is(":disabled")) {
cy.log("No existing routes found...")
} else {
cy.log("Deleting......")
cy.get('.delete-button').click({ force: true, multiple: true })
}
});
Run Code Online (Sandbox Code Playgroud)
这是 DOM:(默认有 3 个元素,如果未禁用,每个选择按钮都会有一个删除选项。)
<button class="selectButton" disabled route="1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="..."></path></svg>
SELECT
</button>
Run Code Online (Sandbox Code Playgroud)
也尝试了 jquery 方法,但结果相同。
var btnStatus = Cypress.$('.selectButton')
.is(":disabled");
if (btnStatus == true) {
cy.log("Deleting......")
cy.get('.delete-button').click({ force: true, multiple: true })
} else {
cy.log("No existing routes found...")
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
更新1: Electron输入后,我的新代码是:
cy.get('voyage-suggested-routes')
.find('button.selectButton')
.then(($routes) => {
if ($routes.is(":disabled").length === 0) {
cy.log("No existing routes found...")
} else {
cy.log("Deleting......")
cy.get('.delete-button').click({ force: true, multiple: true })
}
});
Run Code Online (Sandbox Code Playgroud)
来自文档jQuery .is()
描述:根据选择器、元素或 jQuery 对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回 true。
因此,如果仅禁用一条路由,则删除不会继续。
尝试使用过滤器来查看是否有任何被禁用。
cy.get('voyage-suggested-routes')
.find('button.selectButton')
.then(($routes) => {
const disabled = $routes.filter(":disabled")
if ($routes.length === disabled.length) {
cy.log("No existing routes found...")
} else {
cy.log("Deleting......")
cy.get('.delete-button').click({ force: true, multiple: true })
}
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3486 次 |
| 最近记录: |