在Selenium,Python中找到下一个兄弟元素?

use*_*414 13 python selenium selenium-webdriver

我有这个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>
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码来获取第一个p标记元素:

elem = driver.find_element_by_id('one')
Run Code Online (Sandbox Code Playgroud)

现在,如何找到下一个兄弟姐妹elem

小智 13

我想纠正Mark Rowlands的答案.正确的语法将是

driver.find_element_by_xpath("//p[@id='one']/following-sibling::p")
Run Code Online (Sandbox Code Playgroud)


ibo*_*odi 8

我们需要传递elem给一个 JavaScript 函数并执行它。当我们传递elem给它时,我们不能在 JS 函数中使用它的名称,但我们可以使用arguments. 以下是如何获得 的下一个兄弟的示例elem

next_sibling = driver.execute_script("""
    return arguments[0].nextElementSibling
""", elem)
Run Code Online (Sandbox Code Playgroud)

看看这个execute_script()函数如何工作的小例子:

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
Run Code Online (Sandbox Code Playgroud)

  • @ user3679414 这应该被视为正确答案,因为完全通用,即不需要起点 xpath。刚刚测试。+1 (4认同)

Mar*_*nds 7

使用Xpath:

driver.find_element_by_xpath("//p[@id, 'one']/following-sibling::p")
Run Code Online (Sandbox Code Playgroud)