赛普拉斯:cy.get(“ a”)。find(“ b”)与cy.get(“ a b”)之间的任何区别

时间:2018-08-30 18:04:57

标签: javascript cypress

似乎它们是相同的。 cy.get("a").find("b")cy.get("a b")之间的输出是否有任何差异?

ab是一些选择器,例如divspan.someClass.someOtherClass。)

4 个答案:

答案 0 :(得分:5)

结果没有差异,但是实现上却有差异。

从文档中获取.find()命令:

  

此命令的查询行为与.find()在jQuery中的工作方式完全匹配。

换句话说,

cy.get("a").find("b");

等效于以下JQuery:

$("a").find("b");

$("a").find("b");将产生与$("a b")相同的结果,但是将使用不同的方法到达那里。


我已经做了一些测试,以在相当复杂的页面上确认这一点:

testing result

请注意cy.get("td").find("tr")cy.get("td tr")的数字结果如何相同。

答案 1 :(得分:1)

正如您在问题中所述,cy.get("a").find("b")cy.get("a b")之间没有区别。但是,赛普拉斯的findget命令之间最重要的区别是cy.get() is chained off of cy, it always looks for the selector within the entire document as stated in Cypress documents。但是,再次stated in Cypress documents查找的工作方式如下:

  

获取特定选择器的后代DOM元素。

因此命令cy.get("a").find("b")返回所有b元素,它们是a元素的后继元素,但是cy.get("a").find("b")找到所有a和{{1 }}元素,无论它们是父项还是子项。

答案 2 :(得分:1)

find()不能在cy上工作,而是可以在链接的DOM上工作。 下面的命令将引发错误 cy.find('。progress')//错误,无法链接到'cy'

答案 3 :(得分:0)

结果没有区别,通常。

cy.get("a").find("b").click() 只会重试 find('b').click(),而 cy.get("a b").click() 会重试整个选择 cy.get("a b")https://docs.cypress.io/guides/core-concepts/retry-ability#Only-the-last-command-is-retried

通常两者都会得到相同的结果,但是当结果不同时,调试很烦人。我尽量坚持一个命令。