<td class="width-90px">
<h5 class="width-90px text-ellipsis align-center margin-top-bottom-5">
<i class="fa fa-check font-14 " aria-hidden="true"></i>
</h5>
</td>
在html class="width-90px"
上方是一个元素,在此元素下还存在另一个元素class="fa fa-check font-14 "
,我们如何赋予条件以检查第二个元素是否在第一个元素内?
答案 0 :(得分:2)
您可以将XPath与适当的谓词一起使用:
//td[@class="width-90px" and .//i[@class="fa fa-check font-14 "]]
答案 1 :(得分:1)
WebElement first = driver.findElement(By.xpath(".//*[@class='width-90px']"));
first.findElement(By.xpath(".//*[@class='fa fa-check font-14 ']")).isDisplayed();
工作正常,如果第一个元素内不存在第二个元素,则抛出错误。
答案 2 :(得分:1)
如果您的唯一目的是验证具有 attribute 为class="fa fa-check font-14 "
的元素是否存在于具有 attribute 为class="width-90px"
的元素下,则可以根据简单的 Ancestor 和 Descendant 关系构造一个Locator Strategy,并可以使用以下任一解决方案:
XPath
:
//td[@class="width-90px"]//i[@class='fa fa-check font-14']
^ -> Ancestor ^ -> Descendant
CssSelector
:
td.width-90px i.fa.fa-check.font-14
^ ->Ancestor ^ ->Descendant
注意:请使用try-catch{}
块根据祖先-后代关系验证元素的存在。
答案 3 :(得分:0)
首先必须找到“ width-90px”类的元素,并且可以在其中查找“ fa fa-check font-14”类的元素,如下所示:
WebElement first = driver.findElement(By.className("width-90px"));
WebElement second = first.findElement(By.className("fa fa-check font-14 "));
如果第二个语句在第一个元素中不存在,则会抛出异常。
答案 4 :(得分:0)
您可以使用Xpath轴来实现:
WebElement element = driver.findElement.(By.xpath("//td[@class='width-
90px']/following-sibling::h5/i[@class='fa fa-check font-14']));
if(element != null)
//element is inside first
else
//element is not the child of first