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)
我是 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)