我有一个班级:
<div class = "abc def">
<i style="...."></i>
some text 2
</div>
<div class = "abc def">
<i></i>
some text
</div>
<div class = "abc def">
1 some text
</div>
如何检查是否有一个包含some text
字样的div并且此div中有i
标记?
对于这个例子,我必须得到第一个和第二个div。第三个div没有i
标签,所以我不会得到他。
我认为应该是:
elements = driver.findElement(By.xpath(//div[contains(text(), 'some text')]));
if (elements.length > 0) {
for(var i = 0; i < elements.length; i++) {
if (elements[i].find('<i') != null) {
alert('the item: ' + i + 'is found');
}
}
}
答案 0 :(得分:2)
XPath表达式或多或少等于自然语言版本:
//div[contains(., 'some text') and i]
如果<i/>
标记可能包含在其他元素中,请改用.//i
。在大多数情况下,您希望使用.
而不是text()
,这会加入所有文本节点并扫描合并后的结果,因此<em>some</em> text
也会匹配。