How to get all the next sibling elements in Selenium Python?


Selenium Python - Get all the next sibling elements

In this tutorial, you will learn how to get all the next sibling elements of a given element, in Selenium Python.

To get all the next or following sibling elements of a given element in Selenium Python, call the find_elements() method on the given element and pass By.XPATH for by parameter, and 'following-sibling::*' for the value parameter in the function call.

following-sibling::* represents all the following or next sibling elements for a given element.

If myelement is the WebElement object for which we would like to find all the next sibling elements, the code snippet for find_elements() method is

myelement.find_elements(By.XPATH, "following-sibling::*")

The above method call returns a list of WebElement objects containing the sibling elements next to the given element.

Example

In this example, we shall consider loading the webpage at URL: /tmp/selenium/index-20.html. The contents of this HTML file is given below. The web page contains a parent div with four children divs.

<html>
 <body>
  <h1>Hello Family</h1>
  <div id="parent">
    <div id="child1">This is child 1.</div>
    <div id="child2">This is child 2.</div>
    <div id="child3">This is child 3.</div>
    <div id="child4">This is child 4.</div>
  </div>
 </body>
</html>
Selenium Python - Get all the next sibling elements

We shall take the child div div#child2 as our WebElement of interest, find all of its next sibling elements, and print them to standard output. From the HTML page, #child3 and #child4 are the next sibling elements of #child2.

Python Program

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By

# Setup chrome driver
driver = webdriver.Chrome(service=ChromeService(executable_path=ChromeDriverManager().install()))
driver.set_window_size(500, 400)

# Navigate to the url
driver.get('/tmp/selenium/index-20.html')

# Get the div element you are interested in
mydiv = driver.find_element(By.ID, 'child2')

# Get next sibling of mydiv
next_siblings = mydiv.find_elements(By.XPATH, "following-sibling::*")

# Print the next siblings
for sibling in next_siblings:
    print("\nNext Sibling")
    print(sibling.get_attribute('outerHTML'))

# Close the driver
driver.quit()

Output

Next Sibling
<div id="child3">This is child 3.</div>

Next Sibling
<div id="child4">This is child 4.</div>

Summary

In this Python Selenium tutorial, we have given instructions on how to find all the next sibling elements of a given web element, with the help of an example program.