Javascript cy.wrap(JQueryObject)。单击()与JQueryObject。单击()

Javascript cy.wrap(JQueryObject)。单击()与JQueryObject。单击(),javascript,typescript,cypress,typescript2.0,Javascript,Typescript,Cypress,Typescript2.0,嗨,有人能给我解释一下为什么我不能只使用元素。在cy.wrap(元素)行上单击()。单击()?使用cy.wrap有什么好处 cy.get(selector) .scrollIntoView() .each((element) => { if (element.text() === 'click me') { cy.wrap(element).click(); } }); 简单的回答是,它将在cypress日志中显示得很好

嗨,有人能给我解释一下为什么我不能只使用
元素。在
cy.wrap(元素)行上单击()
。单击()
?使用cy.wrap有什么好处

  cy.get(selector)
    .scrollIntoView()
    .each((element) => {
      if (element.text() === 'click me') {
        cy.wrap(element).click();
      }
    });

简单的回答是,它将在cypress日志中显示得很好,您将获得用户与该元素交互的信心(与机器交互相反)

我想在这个特定的例子中,您可以将其视为手动调用
onclick
处理程序和让机器人在可交互元素上单击虚拟鼠标之间的区别,后者更接近于人类交互,从而提高了可信度

您可能会发现这很麻烦,但是90%的情况下您甚至不需要使用
cy.wrap
,因为您可以直接访问包装的元素

这段代码应该可以完成我想的工作,我也会跳过
scrollIntoView()
。如果这是页面上唯一一个带有“click me”的元素,我将只提供文本,而不提供选择器

cy.contains(选择器“单击我”)
.scrollIntoView()
。单击()

元素
在本例中是一个
jQuery
对象(或者可能是一组对象),我认为只调用
元素。单击()
可能也可以。但是,使用
cy.wrap(element).click()
Cypress将检查元素是否可见,并且没有被其他元素覆盖,因此用户无法与其交互。那么,编写cypress测试的首选方法是什么呢?我肯定会选择
cy.wrap(element)。click()