Javascript 使用CSS仅搜索量角器webElementFinder的子级
我有一个量角器webElementFinderJavascript 使用CSS仅搜索量角器webElementFinder的子级,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我有一个量角器webElementFindertestElement。我只想匹配它的div子代(不是孙子或任何其他后代),因此testElement.find('div')将无法工作,因为它将查找所有后代div 如果量角器像jQuery一样工作(这是有意义的,因为Angular足够聪明,如果它现在的话可以使用jQuery,并且量角器是在考虑Angular的情况下构建的),我只需要执行testElement.find('>div'),尽管find参数本身不是有效的CSS选择器,它仍然可以工作;然而
testElement
。我只想匹配它的div
子代(不是孙子或任何其他后代),因此testElement.find('div')
将无法工作,因为它将查找所有后代div
如果量角器像jQuery一样工作(这是有意义的,因为Angular足够聪明,如果它现在的话可以使用jQuery,并且量角器是在考虑Angular的情况下构建的),我只需要执行testElement.find('>div')
,尽管find
参数本身不是有效的CSS选择器,它仍然可以工作;然而,由于量角器只使用内置的元素函数,CSS选择器本身无效,量角器会抛出一个错误
我可以走这条路,因为xpath本机允许您查看子元素,但我更愿意使用CSS而不是xpath。从当前元素获得直接的父子定位器没有直接且简单的方法。解决此问题的常用方法是使用
/
XPath表达式,但也有一种“黑客”使用:
没有直接且简单的方法可以从当前元素获得直接的父子定位器。解决此问题的常用方法是使用
/
XPath表达式,但也有一种“黑客”使用:
只需使用:
$('testElement > div')
只需使用:
$('testElement > div')
解决方案取决于以下几点:
const testElement=element(by.css('.some selector'))
),那么您可以执行testElement.all(by.css('div'))
。请注意all
,因为您谈论的是儿童,您会发现所有儿童都有all。它将返回一个ElementArrayFinder,请参见const foo='.testElement'
),那么您可以执行$$('.testElement>div')
。这将返回所有元素。如果返回ElementArrayFinder,请参阅我希望您可以将
testElement
的选择器添加到带有
的css选择器中,这样做的好处是,您将获得作为testElement
-选择器的直接子元素的所有元素。解决方案取决于以下几点:
const testElement=element(by.css('.some selector'))
),那么您可以执行testElement.all(by.css('div'))
。请注意all
,因为您谈论的是儿童,您会发现所有儿童都有all。它将返回一个ElementArrayFinder,请参见const foo='.testElement'
),那么您可以执行$$('.testElement>div')
。这将返回所有元素。如果返回ElementArrayFinder,请参阅我希望您可以使用
>
将testElement
的选择器添加到css选择器中,这样做的好处是,您将获得所有元素,这些元素都是testElement
-选择器的直接子元素,选择此选项作为答案,因为它避免了重新启动选择器(即,它紧随其后).好主意,但在我的例子中,.locator().value
返回一个xpath,而不是css。选择这个作为答案,因为它可以避免重新启动选择器(即它紧随其后)。好主意,但在我的例子中,.locator().value
返回一个xpath,而不是css。