Locating child nodes of WebElements in selenium Locating child nodes of WebElements in selenium selenium selenium

Locating child nodes of WebElements in selenium


According to JavaDocs, you can do this:

WebElement input = divA.findElement(By.xpath(".//input"));

How can I ask in xpath for "the div-tag that contains a span with the text 'hello world'"?

WebElement elem = driver.findElement(By.xpath("//div[span[text()='hello world']]"));

The XPath spec is a suprisingly good read on this.


If you have to wait there is a method presenceOfNestedElementLocatedBy that takes the "parent" element and a locator, e.g. a By.xpath:

WebElement subNode = new WebDriverWait(driver,10).until(    ExpectedConditions.presenceOfNestedElementLocatedBy(        divA, By.xpath(".//div/span")    ));


For Finding All the ChildNodes you can use the below Snippet

List<WebElement> childs = MyCurrentWebElement.findElements(By.xpath("./child::*"));        for (WebElement e  : childs)        {            System.out.println(e.getTagName());        }

Note that this will give all the Child Nodes at same level ->Like if you have structure like this :

<Html> <body>  <div> ---suppose this is current WebElement    <a>   <a>      <img>          <a>      <img>   <a>

It will give me tag names of 3 anchor tags here only . If you want all the child Elements recursively , you can replace the above code with MyCurrentWebElement.findElements(By.xpath(".//*"));

Hope That Helps !!