我在硒中遇到了如下情况:
查找<span>
包含文本span-text
,并使用类parent-class
找到它的父节点(不是直接父节点,而是遍历DOM树的所有级别后的父节点)并在该父节点下找到具有类<img>
img-class
节点
样品:
<div> -(1)
<div> -(2)
<div> -(3)
<span> -(4)
<div> -(5)
<img> -(6)
我正在看它的方法是 - 先找到(4)然后找到它的第一个祖先(1),然后找到(6)实际上属于(2)。我希望嵌套查询,即使看起来很复杂。
任何帮助?
答案 0 :(得分:0)
这应该做你想要的。我现在假设span-text
是innerText
而不是某些属性。如果它是一个属性,这可能会变得更简单。
基本上,我们使用DIV
类抓取所有parent-class
并循环查找具有SPAN
内部文本的子span-text
。一旦我们找到它,我们就知道我们有正确的父级,所以我们找到了带有“img-class”类的子IMG
。我添加了一行来写出找到的标签,以便您可以快速验证它是否正确。
List<WebElement> parents = driver.findElements(By.cssSelector("div.parent-class"));
for (WebElement parent : parents)
{
List<WebElement> spans = parent.findElements(By.tagName("span"));
for (WebElement span : spans)
{
if (span.getText().contains("span-text"))
{
WebElement found = parent.findElement(By.cssSelector("img.img-class"));
System.out.println(found.getAttribute("outerHTML")); // write out the element to the console to verify
}
}
}