如何在量角器中获取具有特定标签名称和文本的后代?

时间:2019-03-08 07:57:21

标签: xpath protractor

我具有以下结构(仅用于示例)。在量角器中,我通过id获取顶部元素。但是,其他元素没有ID。我需要获取包含文本“ 20”的“标签”元素。在量角器中,是否有一种简单的方法来选择带有特定标签的元素,该标签包含来自父元素的所有后代的特定文本?

  <pc-selector _... id="Number1">
    <div ...></div>
    <div ...>
          <div ...>
                <check-box _...>
                   <div _ngcontent-c25="" ...>
                       <label _ngcontent-c25="">
                          <input _ngcontent-c25="" type="checkbox">
                          <span _ngcontent-c25="" class="m-checkbox__marker"></span>
                       20 More text to follow</label>
                    </div>
                 </check-box>
         </div>
    </div>
  </pc-selector>

我找不到任何东西,所以我尝试使用xpath,但是量角器抱怨我的xpath无效:

parentElement = element(by.id('Number1'));
return parentElement.element(by.xpath(".//label[contains(text(),'20'))]"));

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用直接xpath访问标签。

element(by.xpath("//*[@id='Number1']//label"));

答案 1 :(得分:0)

您的[contains(text(),'20')]中有一个额外的括号,这可能会引起您的问题,但是使用单个XPath可以实现多种其他方式或链接其他定位器。

此过程是您必须首先找到具有正确ID的div,然后找到它的子标签。

//Xpath
element(by.xpath("//pc-selector[@id='Number1']//label[contains(text(),'20')]"));

//Chained CSS
element(by.id('Number1')).element(by.cssContainingText('label','20'));

您可能还想了解xpath axes,这可以使我们进行非常动态的选择。