参见柏树测试
click_spec.coffee
it "throws when a non-descendent element is covering subject", (done) ->
$btn = $("<button>button covered</button>")
.attr("id", "button-covered-in-span")
.prependTo(cy.$$("body"))
span = $("<span>span on button</span>")
.css(position: "absolute",
left: $btn.offset().left,
top: $btn.offset().top,
padding: 5, display: "inline-block",
backgroundColor: "yellow")
.prependTo(cy.$$("body"))
cy.on "fail", (err) =>
...
expect(err.message).to.include "cy.click() failed because this element"
expect(err.message).to.include "is being covered by another element"
...
done()
cy.get("#button-covered-in-span").click()
cy.on('fail')
用于调试。
这类似于使用
expect().to.throw()
为了更彻底,我会打电话给
click({force: true})
.
it('should fail the click() because element is covered', (done) => {
// Check that click succeeds when forced
cy.get('button').click({ force: true })
// Use once() binding for just this fail
cy.once('fail', (err) => {
// Capturing the fail event swallows it and lets the test succeed
// Now look for the expected messages
expect(err.message).to.include('cy.click() failed because this element');
expect(err.message).to.include('is being covered by another element');
done();
});
cy.get("#button-covered-in-span").click().then(x => {
// Only here if click succeeds (so test fails)
done(new Error('Expected button NOT to be clickable, but click() succeeded'));
})
})
/柏树/支架/索引.js
Cypress.Commands.add("isNotActionable", function(selector, done) {
cy.get(selector).click({ force: true })
cy.once('fail', (err) => {
expect(err.message).to.include('cy.click() failed because this element');
expect(err.message).to.include('is being covered by another element');
done();
});
cy.get("#button-covered-in-span").click().then(x => {
done(new Error('Expected element NOT to be clickable, but click() succeeded'));
})
})
/赛普拉斯/集成/我的测试规范js
it('should fail the click() because element is covered', (done) => {
cy.isNotActionable('button', done)
});
注意
我在等着呢
done()
当测试前提(即按钮被覆盖)为假时超时。
.then()
关闭第二次点击允许
完成()
以错误消息调用。这个
then()
只有在单击成功时才会调用回调,否则
cy.once('fail')