Python、Selenium:如何获取元素旁边的文本

Python, Selenium: How to get text next to element

我是 selenium 的新手,我正在尝试获取已知元素旁边的单元格文本。

这是网页的摘录table:

<div class="row">
    <div class="cell">
        text-to-copy
    </div>
    <div class="cell">
        <input type="text" size="10" id="known_id" onchange="update(this.id);" onclick="setElementId(this.id);"/>
        X
    </div>
    <div class="cell right">
        <div id="some_id">?</div>
    </div>
</div>

看起来像这样:

从这个 table 我想用 selenium 得到 text-to-copy。由于 table 的组成可能不同,因此无法知道单元格 xpath。因此我不能使用 selenium_driver.find_element_by_xpath()。唯一已知的是它旁边的单元格的 ID (id=known_id)。

下面的伪代码是为了说明我在找什么:

element = selenium_driver.find_element_by_id("known_id")
result = element.get_visible_text_from_cell_before_element()

有没有办法用 selenium 获取可见文本 (text-to-copy)?

我相信你可以公平地使用 xpath,所有其他 locators Selenium supports would not work,因为我们必须在 [=] 中向上遍历 31=].

下面的xpath依赖于known_id

//input[contains(@id,'known_id')]/../preceding-sibling::div

您必须使用 .text.get_attribute 等来获取文本。

示例代码:

time.sleep(5)
element = selenium_driver.find_element_by_xpath("//input[contains(@id,'known_id')]/../preceding-sibling::div").get_attribute('innerText')
print(element)