if '_charlesStatus' in rsp and rsp['_charlesStatus'] != 'Complete':
  continue
  lrsc['method'] = req['method']
  lrsc['url'] = req['url']
  headers = req['headers']
  # http head
  header_dic = list2dic(headers)
  if 'SOAPAction' in header_dic:
  lrsc['SOAPAction'] = header_dic['SOAPAction'].replace('"', '\"')
  if 'Referer' in header_dic:
  lrsc['Referer'] = header_dic['Referer']
  if 'Content-Type' in header_dic:
  lrsc['Content-Type'] = header_dic['Content-Type']
  if lrsc['method'] == 'GET':
  pass
  elif lrsc['method'] == 'POST':
  if 'postData' in req:
  if 'text' in req['postData']:
  lrsc['posttext'] = req['postData']['text']
  if 'params' in req['postData']:
  lrsc['postparams'] = req['postData']['params']
  if 'mimeType' in req['postData']:
  lrsc['postmime'] = req['postData']['mimeType']
  else:
  continue
  res.append(dict2lr(lrsc))
  return res
  if __name__ == '__main__':
  parse = OptionParser()
  parse.add_option("-f", action="store", dest="harfile", help='harfile path')
  parse.add_option("-o", action="store", dest="lrfile", help='action.c path')
  (options, args) = parse.parse_args()
  if options.harfile is None or options.lrfile is None:
  parse.print_help()
  quit()
  if not os.path.exists(options.harfile):
  print('Har file %s not exist' % options.harfile)
  quit()
  res = parhar(options.harfile)
  file = open(options.lrfile, mode='w', encoding='utf-8')
  for sc in res:
  file.write(sc)
  file.write(" ")
  file.close()
  print('Output to %s' % options.lrfile)
  生成的脚本,可以直接copy到LR中使用,根据需要做参数化和关联,对于不支持通过lr录制的,如接口类,app类的,通过这种方式可以更快的生成脚本。
  可能还存在部分未考虑到的问题,如请求并发,编码等问题。需要根据实际情况调整。
  其他
  对于其他工具,也可以自己解析har生成对应的测试案例、脚本等。
  另外,在charles中,还支持web interface,开启后,可以远程管理charles,打开或关闭选项,下载har文件,有需要的可以自己写请求实时远程管理,做到进一步的自动化。