chrome 控制台信息获取 python_用Python获取log并解析,RPC接口请求

接到这样的一个需求就是,通过抓取接口的操作日志,然后解析出来相应的参数,然后通过rpc接口回放这些日志。

获取log

这里有一点特殊的是,我的log并不是来自于控制台,而是来自于Chrome浏览器的开发者工具,因为后台是用node.js写的。页面相当于一个触发器。打开一个页面,这个页面会触发一些单元测试用例,然后会产生一系列的log。

所以问题的关键就是如何获取Chrome开发者工具控制台的信息?答案就是:利用selenium,selenium会有一个接口,get_log(),通过这个接口,就可以获得相应的日志。示例代码如下:

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

import time

# enable browser logging

d = DesiredCapabilities.CHROME

d['loggingPrefs'] = { 'browser':'ALL' }

chromedriver="/Users/mac/Desktop/chromedriver"

driver = webdriver.Chrome(chromedriver,desired_capabilities=d)

# load some site

driver.get('http://localhost:5000/test.html')

# print messages

time.sleep(10)

with open('red.txt','w') as f:

for entry in driver.get_log('browser'):

print (entry)

f.write(str(entry))

f.write('\n')

但是这样打印出来的日志,并不能打印出json数组,也不能打印出对象。所以需要在log打印源头上改。

解析log

上一步的log都放在了txt文件中,所以先读取文件。findall是匹配到所有的。先筛选出含有的部分,在用[A-Za-z0-9-_]{1,50}提取出来

with open('red.txt','r') as f:

a=f.readlines()

all_obj={}

s=0

for i in a:

temp_dict={}

#获取入参

in_p=re.compile(r'\\"(.*)\"')

in_matchObj=in_p.findall(i)

in_p_last=re.compile(r'[A-Za-z0-9-_]{1,50}')

in_lastObj=in_p_last.findall(str(in_matchObj))

RPC接口

这里不同的RPC框架使用不同的方式吧,但结构大致都类似,我当时的后端,他们用的是zbus这个rpc方式,官方文档上有Python的请求方式,

from zbus import ClientBootstrap

b = ClientBootstrap() #重对象,里面有连接池,建议应用层面共享,!切记不能每次方法调用实例化一次!

#b.ha(True) #默认直连,不启用HA

b.service_address('localhost:15555')

b.service_token('')

b.service_name('hiposNewAge') #设置默认的服务标识,可动态改变

b.module('OrderService') #设置默认的模块, 可动态改变

b.timeout(10)

rpc = b.invoker()

r=rpc.OpenOrder(ticketId)#调用相应的RPC服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值