量角器 - 通过子元素

时间:2016-03-31 22:19:46

标签: angularjs xpath jasmine protractor end-to-end

我正在进行量角器测试,其中有多个相同元素类型的标题,但仅在它显示的文本上有所不同。要使这些标题验证它们是否显示,可以使用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中的“Sample”文本过滤它的原因。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您将引用直接子文本节点text()替换为应该返回整个文本内容.,则您尝试的XPath可以正常工作上下文节点:

//div/div/div[@id="headingOne"]/div[contains(., "Sample")]/following-sibling::div

您可能希望在上述XPath之后添加/input[@type="checkbox"],以确保以下同级div中存在该复选框。