赛普拉斯“ have.attr”具有正则表达式

时间:2019-08-31 07:30:53

标签: cypress

在赛普拉斯中,我可以按如下所示的精确文本来匹配属性的值:

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/));

1 个答案:

答案 0 :(得分:3)

the Cypress docshave.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/);