还在用鼠标进行着重复的操作?几行python代码帮你搞定!

《还在用鼠标进行着重复的操作?几行python代码帮你搞定!》 还在用鼠标进行着重复的操作?几行python代码帮你搞定!

使用python实现鼠标和键盘的自动化

这篇文章说明了如何使用pyautogui模块实现鼠标和键盘的自动化,由于本模块不是内建模块,所以,我们得用下面的命令进行安装:

当然对于刚刚接触Python编程的同学来说,学习起来是有点困难,但是不要担心,小编准备了一份Python基础的学习资料,你们加小编Python学习群:943752371就可以领取了!

《还在用鼠标进行着重复的操作?几行python代码帮你搞定!》 还在用鼠标进行着重复的操作?几行python代码帮你搞定!

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>pip install pyautogui
</pre>

Python使用屏幕坐标系统跟踪和控制鼠标。假设屏幕分辨率为1920X1080,那么屏幕的坐标系统如下:

《还在用鼠标进行着重复的操作?几行python代码帮你搞定!》 还在用鼠标进行着重复的操作?几行python代码帮你搞定!

image

size()-获取屏幕分辨率

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
print(pyautogui.size())
</pre>

输出结果:

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>(1366, 768)
</pre>

moveTo()-移动鼠标

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui

鼠标指针的移动

pyautogui.moveTo(100,100,duration = 1)
</pre>

上述moveTo()函数使用了三个参数,第一个100,是目的坐标的x坐标,第二个100,是目的坐标的y坐标。第三个是一个可选参数,默认是0,表示鼠标指针从当前位置移动到目的坐标的时间,单位是秒。在你的机子上运行上面这段代码,你会发现,鼠标经过1秒的时间,移动到了(100,100)的位置。

moveRel()-鼠标位置的相对移动

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui

鼠标位置将会从当前位置向下移动50个像素

pyautogui.moveRel(0,50,duration = 1)
</pre>

position()-获取鼠标当前位置

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
print(pyautogui.position())
</pre>

执行代码,屏幕会输出鼠标当前位置坐标

click()-单击和拖拽鼠标

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
pyautogui.click(100,100)
</pre>

这段代码在位置(100,100)执行一个典型的鼠标单击。

我们有两个与鼠标拖动操作相关的功能,dragTo和dragRel。它们执行类似于moveTo和moveRel函数,只是在移动时按住鼠标左键,从而启动拖动。

这个功能可以在很多地方使用,比如移动对话框,或者在MSPaint中使用铅笔工具自动绘制。用颜料画正方形:

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import time
import pyautogui
time.sleep(10)

pyautogui.moveTo(1000, 700, duration = 1)

pyautogui.dragRel(-100, 0, duration = 1)

pyautogui.dragRel(0, -100, duration = 1)
pyautogui.dragRel(100, 0, duration = 1)
pyautogui.dragRel(0, 100, duration = 1)
</pre>

在开始画之前,你有10秒钟的时间来打开画图软件。

scroll()—屏幕滚动

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
pyautogui.scroll(200)
</pre>

scroll()的参数为向上滚动的像素数

typewrite()-可以使用typewrite()函数自动输入字符串。只需将您想要键入的字符串作为该函数的参数传递即可。

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
pyautogui.click(100, 100)
pyautogui.typewrite(“hello world !”)
</pre>

传递键名:可以通过typewrite()函数分别传递键名。

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
pyautogui.typewrite([“a”, “left”, “ctrlleft”])
</pre>

这段代码自动等效于键入“a”,按下左箭头键,并按下左控制键。

按下组合键:使用热键()函数按ctrl-c、ctrl-a等组合键。

<pre style=”-webkit-tap-highlight-color: transparent; box-sizing: border-box; font-family: Consolas, Menlo, Courier, monospace; font-size: 16px; white-space: pre-wrap; position: relative; line-height: 1.5; color: rgb(153, 153, 153); margin: 1em 0px; padding: 12px 10px; background: rgb(244, 245, 246); border: 1px solid rgb(232, 232, 232); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;”>import pyautogui
pyautogui.hotkey(“ctrlleft”, “a”)
</pre>

这段代码自动等效于同时按下ctrl和“a”。因此,在windows中,这将导致选择屏幕上显示的所有文本。

《还在用鼠标进行着重复的操作?几行python代码帮你搞定!》 还在用鼠标进行着重复的操作?几行python代码帮你搞定!

    原文作者:浪里小白龙q
    原文地址: https://www.jianshu.com/p/46faeefba11a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞