柏树调用('removeAttr','目标')不起作用

时间:2019-12-02 16:11:22

标签: javascript testing cypress end-to-end

这是我的柏树代码:

 cy.get(`${sitestovisit.searchBoxFormID} > form`)
   .should('have.attr', 'target')<br>
   .invoke('removeAttr', 'target')

sitestovisit.searchBoxFormId包含来自JSON的数据,并且其工作正常,但是它表明表单中有一个target属性,但是当我尝试删除它时,它不起作用。

当我将上述代码替换为:

 cy.get('#booking_search > form')
  .invoke('removeAttr', 'target')

它工作正常,这是什么问题?我不能直接使用,因为我需要循环使用 Here's the output

2 个答案:

答案 0 :(得分:2)

失败,因为您在调用.should('have.attr', 'target')之前有这个断言.invoke('removeAttr', 'target')

这将起作用

 cy.get(`${sitestovisit.searchBoxFormID} > form`)
   .invoke('removeAttr', 'target')

然后..如果您需要在删除目标属性之前查看其是否存在,我会这样做。

  cy
      .get(`${sitestovisit.searchBoxFormID} > form`)
      .should('have.attr', 'target')

  cy
       .get(`${sitestovisit.searchBoxFormID} > form`)
       .invoke('removeAttr', 'target')

答案 1 :(得分:0)

我将使用cy.get对元素yield使用then语句:

cy.get(`${sitestovisit.searchBoxFormID} > form`)
  .then( $elem => {
    $elem[0].removeAttribute('target');
  })