Javascript 使用CSS仅搜索量角器webElementFinder的子级

Javascript 使用CSS仅搜索量角器webElementFinder的子级,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,我有一个量角器webElementFindertestElement。我只想匹配它的div子代(不是孙子或任何其他后代),因此testElement.find('div')将无法工作,因为它将查找所有后代div 如果量角器像jQuery一样工作(这是有意义的,因为Angular足够聪明,如果它现在的话可以使用jQuery,并且量角器是在考虑Angular的情况下构建的),我只需要执行testElement.find('>div'),尽管find参数本身不是有效的CSS选择器,它仍然可以工作;然而

我有一个量角器webElementFinder
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')

解决方案取决于以下几点:

  • 如果testElement是ElementFinder(
    const testElement=element(by.css('.some selector'))
    ),那么您可以执行
    testElement.all(by.css('div'))
    。请注意
    all
    ,因为您谈论的是儿童,您会发现所有儿童都有all。它将返回一个ElementArrayFinder,请参见
  • 如果testElement是一个选择器(
    const foo='.testElement'
    ),那么您可以执行
    $$('.testElement>div')
    。这将返回所有元素。如果返回ElementArrayFinder,请参阅

  • 我希望您可以将
    testElement
    的选择器添加到带有
    的css选择器中,这样做的好处是,您将获得作为
    testElement
    -选择器的直接子元素的所有元素。解决方案取决于以下几点:

  • 如果testElement是ElementFinder(
    const testElement=element(by.css('.some selector'))
    ),那么您可以执行
    testElement.all(by.css('div'))
    。请注意
    all
    ,因为您谈论的是儿童,您会发现所有儿童都有all。它将返回一个ElementArrayFinder,请参见
  • 如果testElement是一个选择器(
    const foo='.testElement'
    ),那么您可以执行
    $$('.testElement>div')
    。这将返回所有元素。如果返回ElementArrayFinder,请参阅

  • 我希望您可以使用
    >
    testElement
    的选择器添加到css选择器中,这样做的好处是,您将获得所有元素,这些元素都是
    testElement
    -选择器的直接子元素,选择此选项作为答案,因为它避免了重新启动选择器(即,它紧随其后).好主意,但在我的例子中,
    .locator().value
    返回一个xpath,而不是css。选择这个作为答案,因为它可以避免重新启动选择器(即它紧随其后)。好主意,但在我的例子中,
    .locator().value
    返回一个xpath,而不是css。