Reputation: 321
I have this HTML:
<body>
<p id='one'> 1A </p>
<p id='two'> 2A </p>
<p id='three'> 3A </p>
<p id='four'> 4A </p>
<p id='five'> 5A </p>
<p id='six'> 6A </p>
<p id='seven'> 7A </p>
</body>
I use the code below to get the first p
tag element:
elem = driver.find_element_by_id('one')
Now, how to find the next sibling of elem
?
Upvotes: 31
Views: 49179
Reputation: 1746
We need to pass elem
to a JavaScript function and execute it. We cannot use it's name inside the JS function when we are passing elem
to it, but we can use arguments
. Here's an example of how you can get the next sibling of elem
:
next_sibling = driver.execute_script("""
return arguments[0].nextElementSibling
""", elem)
Take a look at this little example of how execute_script()
function works:
sum = driver.execute_script("""
console.log(arguments[0].innerHTML) // will print innerHTML of the element in console logs of the page
return arguments[1] + arguments[2]
""", elem, 5, 6)
print(sum) # 11
Upvotes: 18
Reputation: 631
I want to correct Mark Rowlands's answer,. The correct syntax will be
driver.find_element_by_xpath("//p[@id='one']/following-sibling::p")
Upvotes: 38
Reputation: 5453
Using Xpath:
driver.find_element_by_xpath("//p[@id, 'one']/following-sibling::p")
Upvotes: 13