如何使用Java检查Selenium Webdriver中另一个元素中是否存在一个元素?

时间:2018-10-26 06:02:58

标签: selenium selenium-webdriver xpath css-selectors

<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 ",我们如何赋予条件以检查第二个元素是否在第一个元素内?

5 个答案:

答案 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