'''
@File : MonkeyTest.py
@Author: Wangzefang
@Date : 2020-09-19
@Desc : 猴子测试
'''
#需要使用的包,没有请自己去下
from pykeyboard import PyKeyboard
from pymouse import PyMouse
from selenium import webdriver
import random,os,time
class Monkey():
def __init__(self):
self.pykeyboard = PyKeyboard()
self.pymouse = PyMouse()
pass
def random_pos(self):
'''
移动鼠标到指定位置
:return: xy像素坐标
'''
x = random.randint(1,1600)
y= random.randint(1,900)
self.pymouse.move(x,y)
return (x,y)
def random_click(self):
'''
左键单击动作
:return:
'''
x,y = self.random_pos()
self.pymouse.click(x,y,button=1,n=1)
print('在位置[%d:%d]进行左键单击操作'%(x,y))
time.sleep(1)
self.write('click',x,y)
def random_double_click(self):
'''
左键双击
:return:
'''
x,y = self.random_pos()
self.pymouse.click(x,y,button=1,n=2)
print('在位置[%d:%d]进行左键双击操作'%(x,y))
time.sleep(1)
self.write('double_click',x,y)
def random_right_click(self):
'''
右键单击动作
:return:
'''
x,y = self.random_pos()
self.pymouse.click(x,y,button=2,n=1)
print('在位置[%d:%d]进行右键单击操作'%(x,y))
time.sleep(1)
self.write('right_click',x,y)
def random_input(self):
'''
输入内容
:return:
'''
x,y = self.random_pos()
content = ['hahah','1234456','Amegin','CCCC','MrM','qwer']
random_index = random.randint(0,len(content)-1)
random_content = content[random_index]
self.pykeyboard.type_string(random_content)
print('在位置[%d:%d]输入%s'%(x,y,random_content))
time.sleep(1)
self.write('random_input',x,y)
def random_enter(self):
'''
按下随机单个键
press_key 按下
release_key 松开
:return:
'''
x,y = self.random_pos()
key_content = [self.pykeyboard.enter_key,self.pykeyboard.backspace_key,self.pykeyboard.shift_key,self.pykeyboard.caps_lock_key,self.pykeyboard.end_key]
random_index = random.randint(0,len(key_content)-1)
random_content = key_content[random_index]
self.pykeyboard.press_key(random_content)
self.pykeyboard.release_key(random_content)
print('在位置[%d:%d]按下%s'%(x,y,random_content))
time.sleep(1)
self.write('random_enter',x,y)
def start_test(self,count):
'''
启动百度网页,进行猴子测试
:param excute:
:param count:
:return:
'''
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com/')
time.sleep(4)
# 根据随机数决定,执行什么动作
for i in range(count):
seed = random.randint(0,count)
if seed <= count * 0.2:
self.random_click()
elif seed <= count *0.4:
self.random_double_click()
elif seed <= count *0.6:
self.random_right_click()
elif seed <= count *0.8:
self.random_input()
else:
self.random_enter()
def write(self,operation,x,y,content='None'):
# 将进行的操作记录到指定文件
with open('monkey.txt','a') as file:
line = '%s,%d,%d,%s\n'%(operation,x,y,content)
file.write(line)
if __name__ == '__main__':
Monkey().start_test(count=20)