如何用Selenium和Python获取SVG的tooltip文本或悬停提示文本
如何用Selenium+Python获取SVG标签的tooltip文本
针对你遇到的Jenkins状态图标tooltip获取问题,分两种场景给出解决方案:
1. 直接获取SVG的tooltip属性值
从你提供的HTML代码来看,SVG标签本身带有tooltip="Failed"属性,这种情况不需要鼠标悬停,直接定位到SVG元素后读取属性即可:
from selenium import webdriver from selenium.webdriver.common.by import By # 初始化浏览器 browser = webdriver.Chrome() browser.get("你的Jenkins任务页面URL") # 定位到包裹SVG的span下的SVG元素 svg_icon = browser.find_element(By.CSS_SELECTOR, "span.build-status-icon__outer svg") # 获取tooltip属性值 status_text = svg_icon.get_attribute("tooltip") print(status_text) # 输出:Failed browser.quit()
2. 鼠标悬停后获取动态tooltip
如果tooltip是鼠标悬停后才动态生成的(比如依赖title属性或JS渲染的弹窗),可以用ActionChains模拟悬停操作,再获取对应文本:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.action_chains import ActionChains browser = webdriver.Chrome() browser.get("你的Jenkins任务页面URL") # 定位到状态图标所在的span元素 status_element = browser.find_element(By.XPATH, "//*[@id='main-panel']/h1/span[1]") # 模拟鼠标悬停 ActionChains(browser).move_to_element(status_element).perform() # 情况1:如果tooltip是通过title属性实现的,直接获取SVG的title属性 svg_icon = status_element.find_element(By.TAG_NAME, "svg") tooltip_text = svg_icon.get_attribute("title") # 情况2:如果是动态生成的tooltip弹窗,定位弹窗元素获取文本(示例,需根据实际DOM调整选择器) # tooltip_popup = browser.find_element(By.CSS_SELECTOR, ".tooltip-content") # tooltip_text = tooltip_popup.text print(tooltip_text) browser.quit()
注:根据你提供的HTML结构,第一种直接读取tooltip属性的方法最适用,无需额外悬停操作。
内容的提问来源于stack exchange,提问作者Sundara Raman
相关产品推荐
相关产品推荐

