如何将Bokeh图表嵌入Robot Framework HTML报告中?
解决Bokeh图表嵌入Robot Framework HTML报告失败的问题
问题根源
- 缺少Bokeh依赖资源:Bokeh的嵌入式组件需要加载对应的JS和CSS才能渲染,报告中未引入这些资源会导致注入的脚本无法被解析执行。
- 组件输出方式错误:分开用
logger.info输出script和div,可能被Robot Framework的报告HTML结构拆分,打乱组件加载顺序。 - 代码遗漏导入:原代码未导入
bokeh.embed模块,运行时会抛出模块未找到的错误。
修正后的代码
from robot.api import logger from bokeh.plotting import figure from bokeh.embed import components # 补上缺失的导入 class customreport(object): def my_test_keyword(self, message): # 创建Bokeh图表 p = figure() p.circle([1, 2, 3], [4, 5, 6]) # 获取嵌入式组件的script和div script, div = components(p) # 引入Bokeh的样式和脚本(需确保文件在报告可访问路径下) # 替换为本地Bokeh安装目录的对应文件,或复制到报告资源文件夹用相对路径 bokeh_css = '<link rel="stylesheet" href="bokeh.min.css" type="text/css">' bokeh_js = '<script src="bokeh.min.js"></script>' # 合并所有内容后一次性注入,保证顺序正确 full_html = f"{bokeh_css}\n{bokeh_js}\n{script}\n{div}" logger.info(full_html, html=True)
关键说明
- 依赖资源准备:从本地安装的Bokeh包中找到
bokeh.min.css和bokeh.min.js文件(通常在site-packages/bokeh/server/static目录下),复制到Robot Framework报告所在文件夹,确保报告能访问到这些资源。 - 合并输出组件:将资源链接、script、div合并后一次性注入,避免报告HTML结构拆分组件,保证加载顺序正确。
- 版本匹配:使用的CSS/JS文件版本必须和代码中Bokeh版本一致,防止兼容性报错。
内容的提问来源于stack exchange,提问作者Krisz
相关产品推荐
相关产品推荐

