1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python模拟鼠标键盘点击 简单自动化动物餐厅

python模拟鼠标键盘点击 简单自动化动物餐厅

时间:2019-09-26 01:58:55

相关推荐

python模拟鼠标键盘点击 简单自动化动物餐厅

Python模拟鼠标键盘点击自动化

首先在玩动物餐厅的时候发现他需要连续点击才能完成任务,而这有是一项枯燥而复杂的任务,所以我就想到用python的鼠标模拟来自动完成

Python中模拟键盘和鼠标最著名的模块是:pymouse和pykeyboard。一次安装两个模块比较麻烦,而有一个库整合了这两个模块,而且能支持跨平台操作,这个库叫PyUserInput,通过安装PyUserInput就可以直接得到pymouse和pykeyboard。

所以这里我直接安装了PyUserInput这个库,安装的时候发生了点小插曲,意识pip版本不是最新版本,使用python -m pip install --upgrade pip这条命令更新后提示已经没有这个库了,找了好多方法,最后重新导入pip(python3.5 -m ensurepip),使用另一种方法升的级

首先关于pymouse模块,这个模块主要的命令如下

# 鼠标操作from pymouse import PyMouse import time# 初始化鼠标对象m = PyMouse()# 移动鼠标到(x,y)绝对地址m.move(200 ,200)# 鼠标中键垂直滚动 10 个单位m.scroll(10 ,0)# 鼠标点击(500,300),第三个参数代表键位,1是左键,2是右键,3是中键m.click(500, 300, 1)# 鼠标从当前位置拖拽到(500 , 300)m.drag(500 , 300)# 获得当前屏幕大小m.screen_size()# 获得鼠标当前位置m.position()

然后是键盘操作,这个相对复杂一点

# 键盘操作from pykeyboard import PyKeyboard# 初始化键盘对象k = PyKeyboard()# 键入Hello,world!k.type_string('Hello,world!')# 按下按键与释放按键k.press_key('H') # 按下H键k.release_key('H') # 释放H键# 使用tap_key函数直接实现按下和释放k.tap_key('H')k.tap_key('1',n=2,interval=5) #支持自定义按下次数和其间隔时间,单位:秒#按住alt键k.press_key(k.alt_key)# tab键k.tap_key(k.tab_key)#释放alt键k.release_key(k.alt_key)#F5键k.tap_key(k.function_keys[5])#Home键k.tap_key(k.numpad_keys[ " Home ' ])#按数字5三次k.tap_key(k.numpad_keys[5],n=3)

当然,在这里模拟点击用不上键盘的输入,我也只是简单的看了下

现在进入正题

如上所示,动物餐厅这7个点是最主要的7个点,所以我只要针对这7个点做模拟点击就行

首先使用m.position()找到鼠标要点击的位置,为了方便我将动物餐厅程序移到了左上角,通过一直循环对鼠标位置一直输出,找到点击的位置,并将其记录下来

for i in range(50000000):print(m.position())

通过模拟点击测试,点击前使用sleep让他等5秒,让我有时间将动物餐厅程序调出来,使用sleep函数让它每间隔0.1秒点击一次,防止点击过快导致程序反应不过来

time.sleep(5)for i in range(1000):time.sleep(0.1)m.click(914,702)

运行一段时间后我发现几个新问题,

1.程序一旦运行起来,不停止我没办法做任何其他操作,包括停止它都不可以;鼠标的位置只能固定在那一个位置疯狂点击,点击太慢了效率又不行,我看不上;

2.连续在同一个像素点点击,程序会自动检测异常,提示非法行为;

3.很多小事情也需要点击,但这个比较容易解决,只要后面将餐厅员工升级就好了;

随后我做了漫长的测试优化有了以下代码

问题解决:

1.每循环点击300次停下休息5秒,并作提示,我就有时间关闭程序等操作

2.找到每个点击位置的大致范围,用random随机库的随机函数让每次点击的位置在一个范围内,而不是一个点,这样被检测的概率就会小很多,甚至可以点击半小时停下一段时间

# 鼠标操作from pymouse import PyMouse import timeimport random# 初始化鼠标对象m = PyMouse()time.sleep(3)for i in range(50000):print(i)time.sleep(0.05)#测试后改为0.05s点击一次效率提升m.click(random.randrange(315,335),random.randrange(620,645))# 招揽客人if i%60 == 0 : # 每点击60次宣传按钮,就对每个桌子进行一轮上菜操作m.click(random.randrange(100,120),random.randrange(305,330)) # 桌子1的位置点击time.sleep(0.1) #间隔0.1s使点击合理化m.click(random.randrange(180,200),random.randrange(305,330)) # 桌子2time.sleep(0.1)m.click(random.randrange(265,285),random.randrange(305,330)) # 桌子3time.sleep(0.1)m.click(random.randrange(100,120),random.randrange(425,445)) # 桌子4time.sleep(0.1)m.click(random.randrange(180,200),random.randrange(425,445)) # 桌子5time.sleep(0.1)m.click(random.randrange(265,285),random.randrange(425,445)) # 桌子6time.sleep(0.1)if i%300 == 0: # 每点击300次休息5秒让我能控制程序print('休息5s')time.sleep(5)

一个简单的自动化就完成了,虽然非常简单,但学以致用

cpython模拟鼠标键盘操作基本函数从这个网页搬运过来的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。