在Selenium中如何用Python查找下一个兄弟元素?

30 投票
3 回答
46733 浏览
提问于 2025-04-18 07:42

我有这样的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>

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

elem = driver.find_element_by_id('one')

现在,我该如何找到 elem 的下一个兄弟元素呢?

3 个回答

13

使用Xpath:

driver.find_element_by_xpath("//p[@id, 'one']/following-sibling::p")
17

我们需要把 elem 传给一个 JavaScript 函数并执行它。在把 elem 传给这个函数的时候,我们不能直接用它的名字,但我们可以使用 arguments。下面是一个例子,展示了如何获取 elem 的下一个兄弟元素:

next_sibling = driver.execute_script("""
    return arguments[0].nextElementSibling
""", elem)

看看这个小例子,了解一下 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
38

我想纠正一下Mark Rowlands的回答。正确的写法应该是

driver.find_element_by_xpath("//p[@id='one']/following-sibling::p")

撰写回答