似乎它们是相同的。 cy.get("a").find("b")
和cy.get("a b")
之间的输出是否有任何差异?
(a
和b
是一些选择器,例如div
和span
或.someClass
和.someOtherClass
。)
答案 0 :(得分:5)
结果没有差异,但是实现上却有差异。
从文档中获取.find()
命令:
此命令的查询行为与
.find()
在jQuery中的工作方式完全匹配。
换句话说,
cy.get("a").find("b");
等效于以下JQuery:
$("a").find("b");
$("a").find("b");
将产生与$("a b")
相同的结果,但是将使用不同的方法到达那里。
我已经做了一些测试,以在相当复杂的页面上确认这一点:
请注意cy.get("td").find("tr")
和cy.get("td tr")
的数字结果如何相同。
答案 1 :(得分:1)
正如您在问题中所述,cy.get("a").find("b")
和cy.get("a b")
之间没有区别。但是,赛普拉斯的find
和get
命令之间最重要的区别是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
通常两者都会得到相同的结果,但是当结果不同时,调试很烦人。我尽量坚持一个命令。