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?
The only difference in functionality is that of preceding. So, here, in contrast to Following-Sibling, you get all the nodes that are siblings or at the same level but are before your current node. The syntax for using Preceding-Sibling is: //tagname[@attribute='value']//preceding-sibling::tagname.
Xpath Sibling is defined as a is a function for retrieving a web element that is a child of the parent element. The web element may be readily recognised or accessed using the sibling attribute of the Xpath expression if the parent element is known.
I want to correct Mark Rowlands's answer,. The correct syntax will be
driver.find_element_by_xpath("//p[@id='one']/following-sibling::p")
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With