我具有以下结构(仅用于示例)。在量角器中,我通过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'))]"));
有什么想法吗?
答案 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,这可以使我们进行非常动态的选择。