# excel
@api.route('/apm/export/report', methods=['post', 'get']) | |
def exportReport(): | |
platform = method._request(request, 'platform') | |
scene = method._request(request, 'scene') | |
try: | |
path = f.export_excel(platform=platform, scene=scene) | |
result = {'status': 1, 'msg':'success', 'path': path} | |
except Exception as e: | |
traceback.print_exc() | |
result = {'status': 0, 'msg':str(e)} | |
return result |
def export_excel(self, platform, scene): | |
logger.info('Exporting excel ...') | |
android_log_file_list = ['cpu_app','cpu_sys','mem_total','mem_native','mem_dalvik', | |
'battery_level', 'battery_tem','upflow','downflow','fps'] | |
ios_log_file_list = ['cpu_app','cpu_sys', 'mem_total', 'battery_tem', 'battery_current', | |
'battery_voltage', 'battery_power','upflow','downflow','fps','gpu'] | |
log_file_list = android_log_file_list if platform == 'Android' else ios_log_file_list | |
wb = xlwt.Workbook(encoding = 'utf-8') | |
k = 1 | |
for name in log_file_list: | |
ws1 = wb.add_sheet(name) | |
ws1.write(0,0,'Time') | |
ws1.write(0,1,'Value') | |
row = 1 #start row | |
col = 0 #start col | |
if os.path.exists(f'{self.report_dir}/{scene}/{name}.log'): | |
f = open(f'{self.report_dir}/{scene}/{name}.log','r',encoding='utf-8') | |
for lines in f: | |
target = lines.split('=') | |
k += 1 | |
for i in range(len(target)): | |
ws1.write(row, col ,target[i]) | |
col += 1 | |
row += 1 | |
col = 0 | |
xls_path = os.path.join(self.report_dir, scene, f'{scene}.xls') | |
wb.save(xls_path) | |
logger.info('Exporting excel success : {}'.format(xls_path)) | |
return xls_path |
# 图片
通过 html2canvas 实现
function screenshot(classname,downloadname) { | |
let container = document.getElementsByClassName(classname); //page-wrapper | |
html2canvas(container[0]).then(canvas => { | |
let imgData = canvas.toDataURL(); | |
let link = document.createElement('a'); | |
link.href = imgData; | |
link.download = downloadname; | |
let flag = link.click(); | |
console.log(flag); | |
}) | |
} |
# html
通过模板渲染成一个 html 文件,然后导出
def make_android_html(self, scene, summary : dict): | |
logger.info('Generating HTML ...') | |
STATICPATH = os.path.dirname(os.path.realpath(__file__)) | |
file_loader = FileSystemLoader(os.path.join(STATICPATH, 'report_template')) | |
env = Environment(loader=file_loader) | |
template = env.get_template('android.html') | |
with open(os.path.join(self.report_dir, scene, 'report.html'),'w+') as fout: | |
html_content = template.render(cpu_app=summary['cpu_app'],cpu_sys=summary['cpu_sys'], | |
mem_total=summary['mem_total'],mem_native=summary['mem_native'], | |
mem_dalvik=summary['mem_dalvik'],fps=summary['fps'], | |
jank=summary['jank'],level=summary['level'], | |
tem=summary['tem'],net_send=summary['net_send'], | |
net_recv=summary['net_recv'],cpu_charts=summary['cpu_charts'], | |
mem_charts=summary['mem_charts'],net_charts=summary['net_charts'], | |
battery_charts=summary['battery_charts'],fps_charts=summary['fps_charts'], | |
jank_charts=summary['jank_charts']) | |
fout.write(html_content) | |
html_path = os.path.join(self.report_dir, scene, 'report.html') | |
logger.info('Generating HTML success : {}'.format(html_path)) | |
return html_path |
def make_ios_html(self, scene, summary : dict): | |
logger.info('Generating HTML ...') | |
STATICPATH = os.path.dirname(os.path.realpath(__file__)) | |
file_loader = FileSystemLoader(os.path.join(STATICPATH, 'report_template')) | |
env = Environment(loader=file_loader) | |
template = env.get_template('ios.html') | |
with open(os.path.join(self.report_dir, scene, 'report.html'),'w+') as fout: | |
html_content = template.render(cpu_app=summary['cpu_app'],cpu_sys=summary['cpu_sys'],gpu=summary['gpu'], | |
mem_total=summary['mem_total'],fps=summary['fps'], | |
tem=summary['tem'],current=summary['current'], | |
voltage=summary['voltage'],power=summary['power'], | |
net_send=summary['net_send'],net_recv=summary['net_recv'], | |
cpu_charts=summary['cpu_charts'],mem_charts=summary['mem_charts'], | |
net_charts=summary['net_charts'],battery_charts=summary['battery_charts'], | |
fps_charts=summary['fps_charts'],gpu_charts=summary['gpu_charts']) | |
fout.write(html_content) | |
html_path = os.path.join(self.report_dir, scene, 'report.html') | |
logger.info('Generating HTML success : {}'.format(html_path)) | |
return html_path |