i具有以下结构(仅用于示例)。在量角器中,我通过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'))]"));
有什么想法吗?
您在[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轴,这可以让我们进行非常动态的选择。
您可以使用直接XPath访问标签。
element(by.xpath("//*[@id='Number1']//label"));