检查父标记

时间:2016-07-04 13:28:10

标签: selenium webdriver

是否可以知道父级是否包含具有特定类名的子级。 示例代码

<div id="parent_tag">
   <div id="div1">
      <span>Title 1</span>
   </div>
   <div id="div2">
      <b>Title 2</b>
   </div>
   <div id="div3">
      <span>Title 3</span>
   </div>
</div>

我试图访问&#34; span tag&#34;只有标题3.我知道我可以通过指定id来实现。但是,如果我想要它通常(即所有元素)。所以我的第一种方法应该是&#34;我会在div&#34;中寻找span标签。但我不知道该怎么做?请帮忙。

3 个答案:

答案 0 :(得分:1)

尝试XPath

//div/span[text()="Title 3"]

答案 1 :(得分:0)

使用jquery选择器在div3中选择span:

$("#div3 span")

或者特别是div3中的第一个span元素:

$("#div3 span:first")

答案 2 :(得分:0)

以下是获得所需内容的想法

    // Get Parent Element
    WebElement parent = driver.findElement(By
            .xpath("//div[@id='parent_tag']"));

    // Get All children elements of the parent element
    List<WebElement> children = parent.findElements(By.xpath("//*"));

    // Init some based param for next usage
    boolean checkClass = false;
    String expectedClass = "Expected_Class";

    // Fetch each child element and check whether its text contains expected string.
    for (WebElement child : children) {       
        if (child.getAttribute("class").contains(expectedClass)) {
            checkClass = true;
        }
    }

    if (checkClass) {
        System.out
                .println("We have at least one child has expected class: "
                        + expectedClass);
    }
    else System.out.println("We don't have any child has expected class: "
                        + expectedClass);

如果您想查看文字,我们可以

    if (child.getText().contains(expectedText)) {        
            checkResult = true;
        }
    }

希望它有所帮助。