Protractor - 当通过子元素筛选时,获取父元素的同级元素

3
我正在进行一项关于protractor测试的工作,其中有多个相同元素类型的标题,但它们仅在显示的文本上有所不同。为了验证这些标题是否显示,可以使用xpath过滤器,例如:

element(by.xpath('//div/div/div[@id="headingOne"]/div/h4/a[contains(text(),"Sample")]')

现在还有另一个验证,即在筛选的标题中应该显示一个复选框,并且复选框元素位于标题父元素的兄弟元素中。代码如下:

<div class="panel-heading" role="tab" id="headingOne">
 <div class="inline">
  <h4 class="panel-title">
    <a>Sample</a>
  </h4>
 </div>
 <div class="inline-right">
  <input type="checkbox" class="">
 </div>
</div>

现在我遇到了一个问题,就是如何验证下一个元素——即复选框是否存在。我一直在使用xpath中的following-sibling,但是它获取的是<a>元素的兄弟节点,对我没有用。

element(by.xpath('//div/div/div[@id="headingOne"]/div[contains(text(), "Sample")]/following-sibling::div'))

请注意,还有其他具有相同元素路径的元素/标题,因此我希望通过内部包含“示例”文本的div进行过滤。

谢谢!

1个回答

1
如果您将引用直接子文本节点的text()替换为应返回上下文节点的整个文本内容.,则您尝试的XPath可以工作:
//div/div/div[@id="headingOne"]/div[contains(., "Sample")]/following-sibling::div

您可能还需要在上述XPath之后添加/input[@type="checkbox"],以确保复选框存在于下一个同级的div中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接