python编写脚本之pyautogui的安装和使用教程
作者:我就是一个小怪兽 发布时间:2021-06-17 09:48:11
前言
以下是我对python中编写脚本最重要的库之一pyautogui的学习整理,分享给大家希望有所帮助
提示:我在初步使用pyautogui的过程中发现对于谷歌浏览器的click点击失效,其他尚未发现
pyautogui的安装
可以使用cmd输入pip install pyautogui进行库的安装
鼠标
对鼠标的控制是基于屏幕上的位置的,比如我的电脑的显示分辨率是1920✖1080,也就是从屏幕的左上角开始,水平方向向右代表x,一行中有1920个小像素块,垂直方向向下代表y,一列中有1080个像素块,就像一个大坐标系,只不过整个屏幕中只有第一象限
使用size获取屏幕的显示分辨率
示例如下:
from pyautogui import size
x,y=size()
print(x,y)
使用position获取鼠标当前位置
from pyautogui import position
x,y=position()
print(x,y)
鼠标移动
moveTo:把鼠标移动到屏幕的某个位置
上面可知左上角的坐标是(0,0),右下角就是(1920,1080),示例如下
from pyautogui import moveTo
moveTo(1684,1059,duration=3)#1684和1059是要移动到的位置,duration表示执行该移动的时间,单位是秒
moveRel(move):基于当前位置进行移动
from pyautogui import moveTo,moveRel
moveRel(100,200,duration=2)
#从当前鼠标所在的位置移动到向右100,向下200的位置,过程时间设定为2秒
鼠标点击
click:单击鼠标
from pyautogui import click
#click中指定了坐标,也是可以设置从执行到点击这个位置的duration时间,以及左边,中间还是右键
click(100,200,button='left',duration=2)
click(100,200,button='middle')
click(100,200,button='right')
doubleClick:双击鼠标
from pyautogui import doubleClick
#参数与单击相同,只不过现在是双击鼠标
doubleClick(100,200,button='left',duration=2)
doubleClick(100,200,button='middle')
doubleClick(100,200,button='right')
mouseDown和mouseUp:鼠标的按下与释放
from pyautogui import mouseDown,mouseUp
mouseDown() # 鼠标按下
mouseUp() # 鼠标释放
鼠标拖动
dragTo:拖动鼠标到某位置
dragRel:根据当前位置对数表进行拖动
鼠标拖动与鼠标移动类似,但相比较,做了一个移动窗口的区别测试
from pyautogui import moveTo,mouseDown,mouseUp
mouseDown(button='left')
moveTo(1000,500)
mouseUp(button='left')
from pyautogui import dragTo,mouseDown,mouseUp
mouseDown(button='left')
dragTo(1000,500)
mouseUp(button='left')
在测试的时候发现,moveTo和鼠标按下相结合可以实现对某窗口的拖动,但是dragTo不可以
鼠标滚动
from pyautogui import scroll
scroll(300)#传入一个整数,正数表示向上滑动滚轮
scroll(-300)#向下滑动滚轮
屏幕处理
screenshot:截取全屏
截图将保存在脚本保存的同一目录下
from pyautogui import screenshot
screenshot().save('屏幕截图.png')#jpg格式也支持,其他格式请尝试
crop截取任意大小的截图 ,比如crop((
locateOnScreen:查找截图位置
这里查找截图位置是在屏幕上查找,找到和保存的截图符合的位置
from pyautogui import locateOnScreen
print(locateOnScreen('屏幕截图.png'))
键盘输入
keyDown和keyUp:键盘按下和键盘释放
通过键盘的按下与释放可以实现多键同时按下,比如ctrl+v的粘贴等,为了实现多键同时,我们还有hotkey('ctrl','c'),可以接受多个参数,按照传入顺序按下,再按照相反的顺序释放
from pyautogui import keyDown,keyUp
keyDown('space') # 按下空格键
keyUp('space') # 释放空格键
keyDown('ctrl')
keyDown('c')
keyUp('c')
keyUp('ctrl')
hotkey('ctrl','c')
press:按键后立即释放
可以看作按下和释放的一个组合,比如我们要发送消息,按enter键,按完之后就会释放,因此press应用起来较多
字母的大小写不影响按键,比如Enter,我们可与编写为press('enter'),press('ENter')
有的键位有两个,比如Shift,在后面加上left或者right,press('shiftleft')
需要强调的是enter按键公认为换行,可以用\n代替,即press('enter')=press('\n'),tab键可用\t代替
上下左右键分别为up,down,left,right
typewrite():连续打字
这里的typewrite可以识别大小写
from pyautogui import typewrite
typewrite('ceshi',0.5)
#第一个参数是要输入的内容,第二个参数是每次按键的间隔时间
typewrite(['c','e','s','h','i'])
#也可以传入一个单个字符串的列表
typewrite(['S','u','n'])#typewrite('Sun',0.5)
#将会输入大写的S
提示信息
提示框
from pyautogui import alert
print(alert(text='一个测试',title='test'))
#点击确定后将返回OK
选择框
from pyautogui import confirm
print(confirm('请选择性别',buttons=['男','女']))
#将输出你的点击项
输入密码
from pyautogui import password
print(password('请输入你的密码'))
#将输出刚才输入的密码
输入普通内容
from pyautogui import prompt
print(prompt('请输入你的账号'))
#将返回刚才输入的内容
来源:https://blog.csdn.net/qq_57099024/article/details/122125304


猜你喜欢
- 一、内置函数下面简单介绍几个:1.abs() 求绝对值2.all() 如果 iterable 的所有元素都为真(或者如果可迭代为空),则返回
- //User 用户的基本信息,也是USERINFO表中的3个列package 登陆判断;public class User { &
- 先导上一期讲了在ABAP中,ALV的普通写法,流程以及相关属性,还讲了基本DEMO ,但是在真正开发中,不会写这么多的代码.原则上是一切从简
- 今天学习Vue中遇到了一个报错信息:$index is not defined,是我写了个for循环在HTML中,然后是因为版本的问题下面是
- 背景:pytest以特定规则搜索测试用例,所以测试用例文件、测试类以及类中的方法、测试函数这些命名都必须符合规则,才能被pytest搜索到并
- 引言做接口测试中,对于一般性的单业务接口测试很多工具可供选择,但是对于一些相关业务相关性的关联接口测试就比较麻烦,使用工具比如jmeter、
- 大家都知道 在Python 中可以用如下方式表示正负无穷:float("inf") # 正无穷float("-
- 1、下载LineNumber.pyhttp://idlex.sourceforge.net/extensions.html2、配置方法(1)
- IIS上设置301 跳转相信大家都会,只要在网站-属性-主目录里 选择重定向URL就行了,这样整站就跳转到目标站点了,但是有个问
- 假设现在有如下N条记录 表明叫book id author title 1 aaa AAA 2 bbb BBB 3 ccc CCC 4 dd
- 当我们在Vue.js项目中引用图片时,关于图片路径有以下几种情形:使用一我们在data里面定义好图片路径imgUrl:'../ass
- 一、下载下载链接:https://www.anaconda.com/二、安装过程安装过程,所有都选默认项目。三、系统环境配置路径:此电脑-属
- return 语句用于退出函数,向调用方返回一个表达式。执行到 return 语句时,会退出函数,return 之后的语句不再执行。如:de
- 用了这么长时间,发现自己竟然不知道utf_bin和utf_general_ci这两者到底有什么区别。。ci是 case insensitiv
- 代码很简单,主要是修改了下百度分享的部分代码,小伙伴们自己对比下。<div class="tool_title"&
- 1.问题引入假设一个场景,一张用户表,包含3个字段。id,identity_id,name。现在身份证号identity_id和姓名name
- 不夸张地说,XML正在接管这个世界,正在成为今天一切Web服务和大多数SOA的基础。XML本身并非一种技术,而是程序设计语言,可支持开发者为
- 本文介绍了让我们先来预览一下代码运行效果吧:首先分析163邮箱登陆页面的网页结构(按F12或单击鼠标右键选择审查元素)1、定位到登陆框(注意
- 目录索引模型B+Tree索引选择索引优化索引选择性覆盖索引最左前缀原则+索引下推前缀索引唯一索引索引失效总结索引模型哈希表适用于只有等值查询
- 游戏规则用pygame动画实现神庙逃亡类似的小游戏,当玩家移动的时候躲避 * ,如果 * 命中玩家或者名字龙都会减速,玩家躲避 * 使更多的 * 打