title

date

tags

category

技巧与工具04-python控制鼠标自动化点击脚本

2017-06-24 10:04:28 -0700

python

pyautogui

tools

python控制鼠标自动化点击脚本

事情起因

今天是DNF九周年活动,出了新职业圣职者,为了快速升级需要获取疲劳药,可以用活动送的

黑钻来抽奖,每抽一次需要分别点击三次,而我能抽奖500多次,所以不想手动来点击,刚好

前几天在微信公众号看了一个简短的文章,是关于python的pyautogui库可以自动化键盘和鼠标

的操作,因此就开始动手做;台式机以前新装的系统,因此需要下载python。

环境搭建

下载 python2.7 并安装

配置python环境变量,包括python目录和scripts目录(为了pip)

pip install pyautogui 安装这个控制鼠标和键盘的库

熟悉pyautogui库

import pyautogui as pg #导入库

pg.size() #返回窗口大小,比如(1920,1080)

pg.position() #返回鼠标当前位置

pg.moveTo(100, 100) #移动鼠标

pg.click(100, 100) #移动鼠标并单击

pg.press('enter') #按下回车键

pg.keyDown('esc') #按下退出键

pg.keyUp('esc') #松开退出键

pg.typewrite('hello') #文本输入

pg.dragTo(100, 100) #鼠标拖拽

脚本编写

脚本的逻辑很简单,首先10秒的时间用来让我放置鼠标到起始的位置,也就是黑钻售货机,

进行第一次点击;之后会进入循环,即每次点击三次,分别是按钮“启动”,“停止”,“确定”,

其中三次的位置均不同,但是dnf会自动将鼠标移动到下一个需要点击的位置,为了给dnf

这个移动的时间,中间有sleep操作。

最终抽奖完成,但是程序会一直运行下去,这时需要将鼠标移动到左上角,这样程序会抛出

异常,从而捕获异常,终止程序;至于为什么不用click()函数,而是用dragTo()这个鼠标

拖拽函数,下面会提到。

#/usr/bin/env python

# coding: utf-8

import sys

from time import sleep

import pyautogui as pg

import pytweening

def my_click():

l_pos, r_pos = pg.position()

pg.dragTo(l_pos+1, r_pos+1, duration = 0.5, button='left')

sleep(0.1)

def main():

# get current position

print "Place your mouse in the starting position within then seconds."

sleep(10)

try:

my_click()

times = 1

while 1:

my_click()

my_click()

sleep(0.5)

my_click()

print "click %03d" % times

times += 1

except pg.FailSafeException as e:

print "Error: %s" % e

print "Over"

except Exception as e:

print "Error: %s" % e

print "Over"

if __name__ == "__main__":

main()

问题总结

经过测试,使用pyautogui可进行按键和文本输入,但是无法进行鼠标的单击,即click()在dnf的窗口无效

怀疑是游戏方有监控鼠标的滑行轨迹,如果是直线的就进行过滤,这应该算是防止作弊的一种手段

还好试了dragTo(),先按下鼠标再松开是可以,否则要考虑使用非直线来进行鼠标的移动,这可能要用到

其他的库,pyautogui中没有找到对应的方法

参考文档

python编写自动化脚本工具_blog/技巧与工具04-python控制鼠标自动化点击脚本.md at master · tigeroses/blog · GitHub...相关推荐

  1. python中类型错误、计数不采用关键字的错误怎么改_Learning/Python-面试问题.md at master · yxxyyx1314/Learning · GitHub...

    Python-面试问题 参考链接 面:Python 中什么元素为假? 答:(0,空字符串,空列表.空字典.空元组.None, False) 面:Python 中查看某个关键字的属性? 答:dir ( ...

  2. python控制软件点击_Python小程序 控制鼠标循环点击代码实例

    Python小程序 控制鼠标循环点击代码实例 这篇文章主要介绍了Python小程序 控制鼠标循环点击代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  3. python编写游戏加速器_Numba:用CUDA加速的高性能Python编译器

    [IT168 编译]Python是一种高效的动态编程语言,广泛应用于科学.工程和数据分析应用领域.使python如此受欢迎的因素有很多,包括其干净的.表达性的语法和标准的数据结构,综合的"内 ...

  4. python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注

    哎呦,又到了每周一次的制图教室啦.经过前面两次制图教程的分享,相信大家对于白模填色和写实渲染这两种表达方式肯定有了较好的掌握. 那么今天我们就转战制图技巧篇,和童鞋们聊一下总平面图中的建筑名称标注问题 ...

  5. python编写一个弹球游戏_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

  6. python编写小游戏17_十分钟教你学会python编写小游戏

    原标题:十分钟教你学会python编写小游戏 看过,估计大家都已经精通了吧,好的,话不多说,今天就活学活用,用python来编写纸牌游戏21点,江湖人称黑杰克,BLACK JACK-(注意法式卷舌). ...

  7. python地理数据处理 下载_python-doc/将Python用于地理空间数据处理.md at master · zhuxinyizhizun/python-doc · GitHub...

    毫无疑问,Python是当今最流行,最通用的编程语言之一.这有很多种强有力的原因,但在我看来,最重要的是:开源定义,语法简单,包括电池的理念(batteries included philosophy ...

  8. python元组使用什么界定符_CookBook/2-Python3基本语法.md at master · Byron4j/CookBook · GitHub...

    Python3 基本语法.常见数据类型.基本的操作符 第一个 Python 程序 我们来看一看在不同编程模式下的执行Python程序. 交互模式编程 调用解释器,不需要传递脚本文件作为参数. # Li ...

  9. 用Python编写带GUI界面的漏洞检测工具(Struts2)

    朕终于在毕业前,摆脱了脚本小子的称号,在答辩老师面前顺利过关.凭借这朕的些许编程基础,终于做出了属于自己的一个脚本工具. Struts2漏洞是一款经典的漏洞,Struts2框架曾爆出过很多高危漏洞.朕 ...

最新文章

  1. eclipse lombok插件安装_Eclipse-安装Freemarker插件
  2. 针对19端口的Chargen进行Dos***
  3. SQL中的SqlConnection连接方式
  4. 开启apache的server-status辅助分析工具
  5. Linux操作系统安装LAMP环境
  6. linux 串口工具_Zynq下linux系统搭建
  7. Linux 小知识翻译 - 「邮件服务器」
  8. 深度优化LNMP之PHP
  9. DHCP 不同情况的操作
  10. 分库分表学习总结(4)——分布式事务常见应用场景总结
  11. Linux 查看网络速率
  12. 文件夹内失效 .htaccess_辽宁本溪内支撑盲管实业
  13. 搜集-类似Visio绘图软件
  14. 100 个 Python 小例子(练习题)
  15. 杭电Oj刷题(2009)
  16. 共享服务器文件溢出,文件共享锁定数溢出
  17. visual studio 提高速度的选项
  18. 【无机纳米材料科研制图——Visio 0305】开启开发人员模式绘制表面等离子共振SPR机理图
  19. 华三服务器java挂载镜像_RAKsmart美国服务器实现挂载镜像操作过程
  20. 如何打造自己的PoC框架-Pocsuite3-框架篇

热门文章

  1. 用Python写了个电影网站系统(附源码)
  2. D28:Maximum sum(最大和,翻译)
  3. python切比雪夫滤波器_python scipy signal.iirfilter用法及代码示例
  4. 【电力电子技术DC-AC】单相方波逆变电路 Simulink仿真
  5. 如何在3dmax中导入照片作为背景
  6. air playit在安卓4.0下崩溃
  7. 深度粗排在天猫新品中的实践
  8. jquery仿凡客诚品图片切换的效果实例代码
  9. linux 无线网卡 监听模式,查看无线网卡是否支持监听模式
  10. 风格迁移0-06:stylegan-源码无死角解读(2)-数据预处理process_reals