Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cypress-find()和within()方法之间的区别_Javascript_Cypress - Fatal编程技术网

Javascript Cypress-find()和within()方法之间的区别

Javascript Cypress-find()和within()方法之间的区别,javascript,cypress,Javascript,Cypress,我的问题很简单:使用这两种方法之间有哪些区别: cy.get('.wtv').find('.sub-wtv') cy.get('.wtv')。在(()=>{cy.get('.sub-wtv');})内 从文档中 它们都让我们使用一个“子DOM”,在这个“子DOM”中,我们可以做任何我们想做的事情,比如搜索一个特定的元素并断言它。 在我看来,这几乎是彼此的别名?! 有人能帮我澄清一下吗?或者给我指出正确的方向? 另外,就性能而言,它们中的一个是否比另一个更好? 我知道它们可能有不同的实现,但

我的问题很简单:使用这两种方法之间有哪些区别:
cy.get('.wtv').find('.sub-wtv')


cy.get('.wtv')。在(()=>{cy.get('.sub-wtv');})内

从文档中

它们都让我们使用一个“子DOM”,在这个“子DOM”中,我们可以做任何我们想做的事情,比如搜索一个特定的元素并断言它。
在我看来,这几乎是彼此的别名?!
有人能帮我澄清一下吗?或者给我指出正确的方向?
另外,就性能而言,它们中的一个是否比另一个更好? 我知道它们可能有不同的实现,但两者的输入和输出并不相同。

.find()
用于单个元素的搜索,但仅将您的操作限制在该元素上

.within()
允许您更改搜索子元素的范围,并使用
cy.get('subelementSelector')
直接调用它们,还可以使用它们。缺点是,不能从父元素的作用域之外调用元素

第三种方法是
cy.get('elementSelector')。然后(element=>{//some code})
-这允许您将元素传递给函数以供使用。您可以使用
cy.get(element.find('subelementSelector')
在中搜索子元素。也可以对位于父元素范围之外的元素使用常用命令。它的sintax更长,但范围更大

编辑: 澄清
.find()
-允许单个元素的使用
.within(passedFunction()=>{})
-将passedFunction的DOM元素的作用域更改为仅子元素
.then(element=>{})
-不更改作用域,但创建变量的JQ变量,该变量可在then函数中使用
cy.get('parentSelector-childSelector')
-是一种css方法,可以获得与
.find()相同的结果。另一种方法是将选择器组合成一个
.get
调用
cy.get('.wtv.sub-wtv')
是的,@CoryDanielson所说的工作方式类似于
.find()
,但使用较少code@RosenMihaylov根据您的解释,我是否正确地假设执行
cy.get().find().then()
cy.get().inthein()
完全相同?我们在这两个领域都在做同一个子领域的工作,对吗?:)
(cy.get().find().then()
不会更改作用域,但允许您在then函数中使用子元素,
。then()
不会更改作用域-它只是将接收到的内容作为JQ变量返回。如果您想用cypress命令链接该JQ元素,则需要使用
cy.wrap()
cy.get()
。在
。然后(element=>{})
作用域中,您仍然需要使用
cy.get(element)。find(subelement)
,但好处是您将元素作为变量。在..
.within()
作用域中,您直接使用
cy.get(subelement)
。从列出的命令中,只有
。在
中更改范围。如果其他命令正常工作,则在
.within()
中写入时,您将仅限于可以访问的元素,因此如果您的选择器
cy.get('.sub wtv'))
是正确的,并且是父元素的一部分-它将调用普通元素。您可以在()中使用另一个
这将进一步缩小范围,只有内部的测试才会在内部激活。此时,如果您将这些命令链接到其他命令,例如
。should(…),则测试将变得不可读,最好首先使用sugestion@CoryDanielson
,他们将提供不同的主题。
cy.get('.wtv').find('.sub-wtv')
将通过sub-wtv,但
cy.get('.wtv')。在(()=>{cy.get('.sub-wtv');})内(
将通过wtv.@Ackroydd,这取决于您是否在like
cy.get('.sub-wtv')内使用
)应该(
)应该()
我的问题更多的是为了理解其中一种方法比另一种方法有哪些优点,我所能看到的是,对于90%的情况,没有一种:P我想说,我们应该使用一种方法,而不是另一种方法,只针对那些10%的边缘情况,其中只有一种方法能够提供我们真正想要的。在我看来,这两种方法都是可行的rk作为彼此的重复(在大多数情况下,你可以使用你最喜欢的任何东西:)看起来你没有抓住不同主题的要点。