环境:Python 3.5.3

pip install pyautogui -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

import pyautogui as pag
# https://blog.csdn.net/astroboythu/article/details/78068070
# https://www.cnblogs.com/qq21270/p/7705008.html # 获取屏幕分辨率
rec = screenWidth, screenHeight = pag.size() # 截屏功能
img = pag.screenshot()
img.save('foo.png') # 截取部分屏幕(x,y,宽度,长度)
img = pag.screenshot(region=(0, 0, 300,400))
img.save('foo1.png') # 获得某个坐标的像素
(r,g,b) = img.getpixel((50, 200))
print(img.getpixel((50, 200))) # 根据图片获取位置
pic_option = pag.locateOnScreen('sysfix.PNG')# (390, 58, 54, 64)
# 获取位置(中心点)点击
x, y = pag.center(rec) # 获得中心点
pag.click(x, y)
# 注释:返回None并报错:像素不匹配;在点击状态上再点击 # 检查XY坐标是否在屏幕上
pag.onScreen(0, 0) #True
pag.onScreen(0, -1) #False # 鼠标操作
# 获取当前鼠标的坐标(left’, ‘middle’, ‘right’)
currentMouseX, currentMouseY = pag.position()
pag.click(pag.position(),button='right') # 按键按下
pag.mouseDown(x=100, y=100, button='left')
# 按键松开
pag.mouseUp(x=100, y=100, button='left')
# 双击
pag.doubleClick(x=100, y=100)
# 右击
pag.rightClick(x=1000, y=100)
pag.click(x=1000, y=100,button='right')
# 中击
pag.middleClick(x=1000, y=100) # 鼠标移动
pag.moveTo(100,100,duration=1) # 绝对坐标
pag.moveRel(100,100,duration=1) # 相对当前操作坐标 # 鼠标拖拽(duration时间不能太短,拖动太快有些系统会吃不消)
pag.dragTo(x=583,y=590,duration=3)
pag.dragRel(x,y,duration=2) # 双击左键
pag.click(pag.position(),clicks=2)
# 两次单击之间停留0.25秒
pag.click(clicks=2, interval=2)
# 三击右键
pag.click(button='right', clicks=2, interval=0.25) # 滚轮
pag.scroll(clicks=2,x=435,y=417) # pyautogui.easeInQuad()函数可以用于moveTo(),moveRel(),dragTo()和dragRel()函数
# 开始很慢,不断加速
pag.moveTo(100, 100, 2, pag.easeInQuad)
# 开始很快,不断减速
pag.moveTo(100, 100, 2, pag.easeOutQuad)
# 开始和结束都快,中间比较慢
pag.moveTo(100, 100, 2, pag.easeInOutQuad)
# 一步一徘徊前进
pag.moveTo(100, 100, 2, pag.easeInBounce)
# 徘徊幅度更大,甚至超过起点和终点
pag.moveTo(100, 100, 2, pag.easeInElastic) # 消息弹窗函数
pag.alert('这个消息弹窗是文字+OK按钮')
pag.confirm('这个消息弹窗是文字+OK+Cancel按钮')
pag.prompt('这个消息弹窗是让用户输入字符串,单击OK')
#返回用户输入的字符串,如果用户什么都不输入,则返回None # 默认延迟时间是2.5秒
pag.PAUSE = 2.5
# 键盘操作
# 输入字符串
pag.typewrite('Hello world',interval=0.25)

PyAutoGUI键盘表:

字符串 代表按键
‘enter’(或‘return’ 或 ‘\n’) 回车
‘esc’ ESC键
‘shiftleft’, ‘shiftright’ 左右SHIFT键
‘altleft’, ‘altright’ 左右ALT键
‘ctrlleft’, ‘ctrlright’ 左右CTRL键
‘tab’ (‘\t’) TAB键
‘backspace’, ‘delete’ BACKSPACE 、DELETE键
‘pageup’, ‘pagedown’ PAGE UP 和 PAGE DOWN键
‘home’, ‘end’ HOME 和 END键
‘up’, ‘down’, ‘left’,‘right’ 箭头键
‘f1’, ‘f2’, ‘f3’…. F1…….F12键
‘volumemute’, ‘volumedown’,‘volumeup’ 有些键盘没有
‘pause’ PAUSE键
‘capslock’, ‘numlock’,‘scrolllock’ CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 键
‘insert’ INS或INSERT键
‘printscreen’ PRTSC 或 PRINT SCREEN键
‘winleft’, ‘winright’ Win键
‘command’ Mac OS X command键

  • keyDown():按下某个键
  • keyUp():松开某个键
  • press():一次完整的击键,前面两个函数的组合。
  • hotkey(‘ctrl’,’c’):热键函数

例子:

import pyautogui as pag

img = pag.screenshot(region=(0, 0, 500,500))
img.save('foo2.png')
pic_option = pag.locateOnScreen('foo2.png')
rec = pag.center(pic_option) a = (rec[0],rec[1])
g = (a[0],a[1]+200)
b = (a[0]+30,a[1]+10)
c = (b[0],b[1]+30)
d = (a[0],g[1]//2)
e = (b[0],(g[1]//2)+10)
f = (b[0],int(g[1]-10)) pag.mouseDown(x=a[0], y=a[1])
pag.moveTo()
pag.mouseUp(g[0], g[1]) pag.mouseDown(a[0], a[1])
pag.moveTo()
pag.mouseUp(b[0], b[1]) pag.mouseDown(b[0], b[1])
pag.moveTo()
pag.mouseUp(c[0], c[1]) pag.mouseDown(c[0], c[1])
pag.moveTo()
pag.mouseUp(a[0], a[0]+50) pag.mouseDown(a[0], a[0]+50)
pag.moveTo()
pag.mouseUp(b[0], a[0]+60) pag.mouseDown(b[0], a[0]+60)
pag.moveTo()
pag.mouseUp(f[0], f[1]) pag.mouseDown(f[0], f[1])
pag.moveTo()
pag.mouseUp(g[0], g[1])

c/s结构的自动化——pyautogui的更多相关文章

  1. (原创)结构体自动化转为char数组的实现

    结构体自动化转换为char数组这个需求,来自于一个最近开发的一个项目,在项目开发过程中遇到一个小问题,需要将各种结构体拷贝到char数组中,这对于一个简单的结构体来说是很简单的事情,比如下面这个只有整 ...

  2. windows10 安装配置 jmeter 自动化接口测试 邮件报告

    1.安装依赖包:JDK(版本:jdk-7u17-windows-x64) 双击即可安装,注意:jdk不要安装中文路径下,jdk和jre安装在同一路径下 1.1:配置jdk环境变量 (1)JAVA_HO ...

  3. C/S架构自动化测试入门

    所谓C/S架构即Client/Server(客户端/服务器架构).虽然近年来C/S架构产品越来越少,大有被B/S(Browser/Server 浏览器/服务器)架构超越的趋势,但C/S还是有B/S不可 ...

  4. 2017-2018-2 20155303『网络对抗技术』Exp6:信息收集与漏洞扫描

    2017-2018-2 20155303『网络对抗技术』 Exp6:信息收集与漏洞扫描 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.基础问题 二.实践过程记 ...

  5. vue.js多页面开发环境搭建

    利用 vue-cli 搭建的项目大都是单页面应用项目,对于简单的项目,单页面就能满足要求.但对于有多个子项目的应用,如果创建多个单页面,显示有点重复,特别是 node_modules 会有多份相同的. ...

  6. 2017-2018-2 20155309南皓芯 Exp6 信息搜集与漏洞扫描

    实践内容 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 3.基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 4.漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞 基 ...

  7. 20155310 Exp6 信息收集与漏洞扫描

    20155310 Exp6 信息收集与漏洞扫描 基础问题回答 1.哪些组织负责DNS,IP的管理. 顶级的管理者是Internet Corporation for Assigned Names and ...

  8. # 2017-2018-2 20155319『网络对抗技术』Exp6:信息收集与漏洞扫描

    2017-2018-2 20155319『网络对抗技术』Exp6:信息收集与漏洞扫描 实践内容 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.O ...

  9. C/S架构系统自动化测试入门

    所谓C/S架构即Client/Server(客户端/服务器架构).虽然近年来C/S架构产品越来越少,大有被B/S(Browser/Server 浏览器/服务器)架构超越的趋势,但C/S还是有B/S不可 ...

随机推荐

  1. VC工程里,如何编译汇编语言的文件

    最近老是有朋友问,VC工程里,如何编译汇编语言的文件,接下来就说一下步骤: 1.将汇编语言文件,加入到工程里: 2.在Solution Explorer窗口中右键单击Visual C++项目,选择Bu ...

  2. Windows2003 安装MVC4 环境的步骤

    一.作为部署服务器的安装步骤 1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net ...

  3. 阿里logo库

    http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2

  4. RabbitMQ学习笔记(1)----RabbitMQ简介与安装

    ·1. 什么是RabbitMQ? RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现. 而AMQP协议则是指:即Advanced ...

  5. css3之BFC、IFC、GFC和FFC

    CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. What's FC?一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...

  6. PAT 天梯赛练习集 L2-022. 重排链表

    题目链接:https://www.patest.cn/contests/gplt/L2-022 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L ...

  7. NOI 2016 优秀的拆分 (后缀数组+差分)

    题目大意:给你一个字符串,求所有子串的所有优秀拆分总和,优秀的拆分被定义为一个字符串可以被拆分成4个子串,形如$AABB$,其中$AA$相同,$BB$相同,$AB$也可以相同 作为一道国赛题,95分竟 ...

  8. 如何让Jboss的debug在myeclise上运行

    1.在windows下运行jboss的debug.bat 看见监听的端口 2.打开myeclipse 点击选择 ①你要配置的名字(随意) ②myeclipse中选中该项目 ③jboss的启动的ip地址 ...

  9. 将maven中央仓库不存在的jar包添加到本地仓库

    这里有2个案例,需要手动发出Maven命令包括一个 jar 到 Maven 的本地资源库. 要使用的 jar 不存在于 Maven 的中心储存库中. 您创建了一个自定义的 jar ,而另一个 Mave ...

  10. HDU 1023

    卡特兰数.把进栈看成是+1,出栈看成是-1,任何时候部分和都有a1+a2+....ak>=0.求这样的数列的个数.这明显是卡特兰数的一个解释嘛.在<组合数学>这本书就有这样的原本的证 ...