是否有可能在Protractor中使用cssContainingText获得下一个兄弟

时间:2015-02-16 12:04:14

标签: javascript angularjs css-selectors protractor end-to-end

是否可以通过使用by.cssContainingText()

来获得下一个兄弟

实施例: HTML代码如下所示:

<div ng-repeat="SomeNgRepeat" class="ng-scope">
    <div class="text-label" >SomeText</div>
    <div class="some-class">SomeValue</div>
</div>

使用以下方式获取元素:

element(by.cssContainingText('div.text-label','SomeText'))

现在找到上述元素的下一个兄弟。

我知道css=form input.username + input寻找兄弟姐妹的方式。但是,这在我的情况下不起作用!

我认为'链接'可以用来实现这一点,但不知道怎么做!

谢谢, Sakshi

3 个答案:

答案 0 :(得分:9)

如果您使用by.xpath()一次性完成该怎么办?

element(by.xpath('//div[@class="text-label" and . = "SomeText"]/following-sibling::div'))

或者,您可以将其与cssContainingText()

结合使用
element(by.cssContainingText('div.text-label','SomeText')).element(by.xpath('following-sibling::div'))

答案 1 :(得分:0)

您可以使用node.nextSibling选择器。看看这个article

答案 2 :(得分:0)

使用Xpath选择器不是一个更好的选择,因为它会减慢元素查找机制的速度。

我设计了一个插件来解决此特定问题:protractor-css-booster

该插件提供了一些方便的定位器,可以更好地找到同级,最重要的是使用CSS选择器。

使用此插件,您可以直接使用:

var elem = element(by.cssContainingText('div.text-label','SomeText')).element(by.followingSibling('div'));

希望,它将对您有帮助...