PyAutoGui 鼠标控制文档

前言:

        最近遇到非常顶尖的动态网站,该站点具有用户行为跟踪系统等一系列的判别机制。处理起来较为吃力,于是应用到此模块包,pyAutoGui类似于selenium,但更为出色的是它具侧重模拟用户的键盘,键盘,截图,消息框的操作,具有显示轨迹特效,更贴近人类行为操作的第三方库。


作者:Simon0903

链接:https://www.jianshu.com/u/2b4bc3b5e6fc

來源:

著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

moveTo(x,y,duration=2) 将鼠标移动到指定的x、y坐标,在2秒内均速移动到。

moveRel(xOffset,yOffset) 相对于当前位置移动鼠标。

dragTo(x,y) 按下左键移动鼠标。

dragRel(xOffset,yOffset)按下左键,相对于当前位置移动鼠标。

click(x,y,button='left')  #参数可以是:left,right,middle

middleClick()模拟中键点击。

doubleClick()模拟左键双击。

mouseDown(x,y,button)模拟在x、y处按下指定鼠标按键。

mouseUp(x,y,button)模拟在x、y处释放指定键。

scroll(units)模拟滚动滚轮。正参数表示向上滚动,负参数表示向下滚动。

typewrite(message)键入给定消息字符串中的字符。

typewrite([key1,key2,key3])键入给定键字符串。

press(key)按下并释放给定键。

keyDown(key)模拟按下给定键。

keyUp(key)模拟释放给定键。

hotkey([key1,key2,key3])模拟按顺序按下给定键字符串,然后以相反的顺序释放。

screenshot()返回屏幕快照的Image对象。


安装

适用于window、OSX、linux等系统

注意: 

window系统上不需要安装其他依赖包

OSX,需要以下依赖包:    

sudo pip3 install pyobjc-framework-Quartz

sudo pip3 install pyobjc-core

sudo pip3 install pyobjc

Linux,需要以下依赖包:

sudo pip3 install python3-xlib

sudo apt-get install scrot

sudo apt-get install python3-tk

sudo apt-get install python3-dev

保护措施


建议设置 PAUSE 和 FAILSAFE 一起使用。


你的程序也可能会失控(即使是按照你的意思执行的),失控时需要阻断。如果鼠标还在自动操作,就很难在程序窗口关闭它。

为了能够及时中断,PyAutoGUI提供了一个保护措施。当pyautogui.FAILSAFE = True时,如果把鼠标光标在屏幕左上角,PyAutoGUI函数就会产生pyautogui.FailSafeException异常。如果失控了,需要中断PyAutoGUI函数,就把鼠标光标在屏幕左上角。要禁用这个特性,就把FAILSAFE设置成False:

FAILSAFE = False

import pyautogui as auto

auto.FAILSAFE=False

通过把pyautogui.PAUSE设置成float或int时间(秒),可以为所有的PyAutoGUI函数增加延迟。默认延迟时间是0.1秒。在函数循环执行的时候,这样做可以让PyAutoGUI运行的慢一点,所有的PyAutoGUI函数在延迟完成前都处于阻塞状态(block)。(未来计划增加一个可选的非阻塞模式来调用函数。),这个设置为贴近模拟人类行为是非常有用的。

例如:

PAUSE

import pyautogui as auto

auto.PAUSE=2.5

auto.moveTo(100,100);pyautogui.click()


一、鼠标控制:


#导入包:

import pyautogui as auto


#获取屏幕分辨率宽高属性,属性不同返回值可能不一样

size()

返回屏幕宽高2个结果

Width, Height = auto.size()

print(Width, Height)


PyAutoGui 鼠标控制文档_第1张图片

# 获取鼠标当前位置坐标

position() 

返回2个结果,分别X,Y轴左边

currentMouseX, currentMouseY = auto.position()

print(currentMouseX, currentMouseY)


PyAutoGui 鼠标控制文档_第2张图片

# 让鼠标位于屏幕水平垂直居中

没法截图运动中的鼠标轨迹...

Width,Height=pyautogui.size()

auto.moveTo(Width/2,Height/2)

# 鼠标均速移动

参数解释,x,y是坐标,duration=? 是用时几秒内完成这个动作

moveTo()

auto.moveTo(x,y, duration=2)  #2秒内均速移动到坐标x,y位置

#相对坐标移动

moveRel ()

此方法是按鼠标当前悬停的位置再增加坐标数值去移动。(例如,鼠标当前位置坐标是(100,100,),于是调用方法auto.moveRel (200,200, duration=0.8),则鼠标在用时0.8秒均速移动到坐标(300,,300)

auto.moveRel (x,y, duration=0.8) #鼠标在用时0.8秒均速移动到坐标 

#鼠标点击动作

click()

click(clicks=2)  #快速双击

click(clicks=2,interval=0.25)  # 间隔0.25s后点击第二次

click(button='right', clicks=2, interval=0.25) 点击右键,2次,间隔0.25

# 双击

doubleClick

auto.doubleClick()  

#右击

rightClick

auto.rightClick()

#拖拽

dragTo()

auto.dragTo(x,y,button='left')

# x,y坐标是拖拽到的终点位置坐标

# button可选为左击'left',右击''right,中间键点击'middle'

#相对位置拖拽

auto.dragRel()

auto.dragRel()

#当前位置点击拖拽+X,Y坐标的像素值,此函数与moveRel ()类似


(这些缓动功能是从Al Sweigart的PyTwening模块复制而来的:https://pypi.python.org/pypi/PyTweening https://github.com/asweigart/pytweening无需安装此模块即可使用推特功能。)

#鼠标缓动 (从慢到快)

easeInQuad 

auto.moveTo(,x,y,025,auto.easeInQuad)  #注意最后的参数是不带括号的

鼠标缓动(从快到慢)

easeOutQuad

auto.moveTo(,x,y,025,auto.easeOutQuad)  #注意最后的参数是不带括号的



鼠标按下和恢复拆分动作

mousedown()和mouseUp() 

auto.mouseDown(); auto.mouseUp()  #与click()做的事情一样,也有X,Y,button参数

鼠标滚轮


scroll()

auto.scroll(10)  #鼠标中间滚轮向上移动10个像素点位置 正数为向上

auto.scroll(-10)  #鼠标中间滚轮向上移动10个像素点位置 负数为向下

# OSX和Linux上,还有横向+垂直移动滚轮的函数方法

hscroll() 

auto.hscroll() 横向#

auto.hscroll(100)   #右横向移动

auto.hscroll(-100)   #左横向移动

vscroll()

auto.vscroll()   #垂直 

auto.vscroll(100)  #鼠标中间滚轮向上移动100个像素点位置 正数为向上

auto.vscroll(-100)  #鼠标中间滚轮向上移动100个像素点位置 负数为向下



你可能感兴趣的:(PyAutoGui 鼠标控制文档)