赛普拉斯调用('removeAttr','目标')不起作用

Bik*_*jan 2 javascript testing e2e-testing cypress

这是我的柏树代码:

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

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

当我将上面的代码替换为:

 cy.get('#booking_search > form')
  .invoke('removeAttr', 'target')
Run Code Online (Sandbox Code Playgroud)

它工作正常,有什么问题吗?我不能直接使用,因为我需要循环使用它 这是输出

小智 8

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

.should('have.attr', 'target')主题从元素更改为属性,但.invoke('removeAttr', 'target')要求主题必须是元素才能工作。

这会起作用

 cy.get(`${sitestovisit.searchBoxFormID} > form`)
   .invoke('removeAttr', 'target')
Run Code Online (Sandbox Code Playgroud)

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

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

  cy
       .get(`${sitestovisit.searchBoxFormID} > form`)
       .invoke('removeAttr', 'target')
Run Code Online (Sandbox Code Playgroud)