在赛普拉斯中,我可以按如下所示的精确文本来匹配属性的值:
cy.get("my-element")
.should("have.attr", "title", "Exact title")
但是,有没有办法通过子字符串或正则表达式来匹配属性的值?像这样:
cy.get("my-element")
.should("have.attr", "title", /Partial title/)
到目前为止,这是我最好的:
cy.get("my-element")
.should("have.attr", "title")
.then(title => expect(title).to.match(/Partial title/));
答案 0 :(得分:3)
每the Cypress docs,have.attr
来自chai-jquery
:
attr(name[, value])
使用
.attr()
声明所选内容的第一个元素具有给定的属性。 (可选)断言 以及一个特定的值。返回值可用于 链接。$('#header').should.have.attr('foo'); expect($('body')).to.have.attr('foo', 'bar'); expect($('body')).to.have.attr('foo').match(/bar/);
它仅直接为该属性获取一个精确值。但是,由于返回值改变了主题,因此可以使用 chaining ,如赛普拉斯文档中所示:
cy .get('nav') // yields <nav> .should('be.visible') // yields <nav> .should('have.css', 'font-family') // yields 'sans-serif' .and('match', /serif/)
在您的情况下
cy.get("my-element")
.should("have.attr", "title")
.and("match", /Partial title/);