python 动态调试_python selenium2 动态调试

#coding=utf-8

'''

Created on 2017-9-9

@author: ceshi 转自https://testerhome.com/topics/9897

'''

# rpcserver.py

import pickle

from selenium.webdriver.chrome.webdriver import WebDriver

from multiprocessing.connection import Listener

from threading import Thread

dr = WebDriver(executable_path="D:\\python27\\chromedriver")

def rpc_server(handler, address, authkey):

sock = Listener(address, authkey=authkey)

while True:

client = sock.accept()

t = Thread(target=handler.handle_connection, args=(client,))

t.daemon = True

t.start()

class RPCHandler(object):

def __init__(self):

# rpc functions map

self._functions = {}

def register_function(self, func):

self._functions[func.__name__] = func

def handle_connection(self, connection):

try:

while True:

#接收到一条消息,使用pickle协议编码

func_name, args, kwargs = pickle.loads(connection.recv())

# rpc调用函数,并返回结果

try:

r = self._functions[func_name](*args, **kwargs)

print(type(r))

connection.send(pickle.dumps(r))

except Exception as e:

connection.send(pickle.dumps(e))

except EOFError:

pass

if __name__ == '__main__':

# 写几个测试方法

def add():

reload(rpcclient)

rpcclient.get(dr)

# 新建一个handler类实例, 并将add方法注册到handler里面

import rpcclient

from imp import reload

rpc_handler = RPCHandler()

rpc_handler.register_function(add)

rpc_server(rpc_handler, ('192.168.3.19', 17001), authkey=b'tab_space')

==========================

#coding=utf-8

'''

Created on 2017-9-9

@author: ceshi

'''

#rpcclient.py

import pickle

class RPCProxy(object):

def __init__(self, connection):

self._connection = connection

def __getattr__(self, name):

# 通过name,得到一个函数

def do_rpc(*args, **kwargs):

self._connection.send(pickle.dumps((name, args, kwargs)))

result = pickle.loads(self._connection.recv())

if isinstance(result, Exception):

raise result

return result

return do_rpc

def get(dr):

#dr.get("https://www.baidu.com")

dr.get('https://testerhome.com/topics/9897')

# dr.get("https://www.baidu.com")

# dr.find_element_by_id("kw").send_keys("selenium")

# dr.find_element_by_id("su").click()

# 远程连接并且调用

if __name__ == '__main__':

from multiprocessing.connection import Client

rpc_client = Client(('192.168.3.19', 17001), authkey=b'tab_space')

proxy = RPCProxy(rpc_client)

b = proxy.add()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值