How to find parent elements by python webdriver? How to find parent elements by python webdriver? selenium selenium

How to find parent elements by python webdriver?


You can find a parent element by using .. xpath:

input_el = driver.find_element_by_name('A')td_p_input = input_el.find_element_by_xpath('..')

What about making a separate xpath for getting selected option, like this:

selected_option = driver.find_element_by_xpath('//option[@selected="selected"]')


From your example, I figure you only want the selected option within a table-row if and only if this row also has an input element with the name "A", no matter where in the html-tree this element resides below the row-element.

You can achieve this via the xpath ancestor-axis.

For the sake of better readability I will show how to do this step by step (but you can actually put everything in only one xpath-expression):

# first find your "A" named elementnamedInput = driver.find_element_by_name("A");        # from there find all ancestors (parents, grandparents,...) that are a table row 'tr'rowElement = namedInput.find_element_by_xpath(".//ancestor::tr");        # from there find the first "selected" tagged optionselectedOption = rowElement.find_element_by_xpath(".//option[@selected='selected']");


One of the possible ways to navigate to element under same hierarchy is to use /../ in xpath as shown below:

current_element = driver.find_element_by_xpath('//android.view.ViewGroup/android.widget.RelativeLayout/android.widget.TextView[@text="Current element text"]/../android.widget.TextView[@text="Next element text"]')

Here it will:

  1. Firstly navigate to android.widget.TextView[@text = "Current element text"]
  2. Then it will go back to parent element i.e android.widget.RelativeLayout and select the next android.widget.TextView[@text="Next element text"] under the same hierarchy.