如何使用 Selenium 和 Python 从文本节点中检索部分文本
Posted
技术标签:
【中文标题】如何使用 Selenium 和 Python 从文本节点中检索部分文本【英文标题】:How to retrieve partial text from a text node using Selenium and Python 【发布时间】:2020-10-08 06:24:03 【问题描述】:我只想获取“文本...”而不使用 .split() 或索引切片
html:
<a class="call_recipe" href="/recipes/2913">
" text ... "
<strong> something~ </strong>
</a>
HTML 快照:
【问题讨论】:
【参考方案1】:driver.find_element_by_class_name("call_recipe").text
我想这就是你所追求的。
How to get text with selenium web driver in python
【讨论】:
【参考方案2】:你可以使用
"find_element_by_class_name("some_text").getText()"
或者为了更好地匹配你可以使用的文本
"driver.find_element_by_xpath("..").text"
希望对你有帮助
【讨论】:
【参考方案3】:要打印 text ...,您必须为 visibility_of_element_located()
诱导 WebDriverWait,您可以使用以下任一 Locator Strategies:
使用CSS_SELECTOR
、childNodes 和strip()
:
print(driver.execute_script('return arguments[0].firstChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "a.call_recipe[href^='/recipes']")))).strip())
使用XPATH
、get_attribute()
和splitlines()
:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//a[@class='call_recipe' and starts-with(@href, '/recipes')]"))).get_attribute("innerHTML").splitlines()[1])
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
参考
您可以在以下位置找到一些相关的详细讨论:
How to get specific text that belongs to div class How to get text from textnodes seperated by whitespace using Selenium and Python【讨论】:
以上是关于如何使用 Selenium 和 Python 从文本节点中检索部分文本的主要内容,如果未能解决你的问题,请参考以下文章
在将数据输出回文本区域时,如何正确清理从文本区域接收的数据?
使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?