Pyautogui超简单的自动化编程(超详细)

部署运行你感兴趣的模型镜像

PyAutoGUI 是一个功能强大的 Python 库,它允许用户通过编写脚本来控制鼠标和键盘,实现自动化操作。无论是自动化测试、数据录入还是演示自动化,PyAutoGUI 提供了一系列的工具和方法,使得自动化任务变得简单易行。本文将详细介绍 PyAutoGUI 的功能和使用方式,以及如何利用它来提高工作效率。

接下来我们开始实操!!

系统:Windows

Language:python

首先先安装pyautogui这个库,可以打开powershell输入:

pip install pyautogui

然后检查库是否安装好,可以输入一下代码进行试验:

import pyautogui

a = pyautogui.size()
print(a)

正常情况下会输出你的当前屏幕的分辨率:

Size(width=2560, height=1600)

如果并无报错那就可以开始正式了解了;

鼠标控制

moveTo()

我们想要控制鼠标到指定的位置,可以使用一个方法:

pyautogui.moveTo(x: , y: , duration: )

而这里的x, y 自然就是你的横坐标和纵坐标,duration则是你要它花多少时间移动到这里

比如:

pyautogui.moveTo(1442, 800, 10 )

就是移动到1442,800这个像素点位置,并且用时十秒钟

那如何知道自己要移动的位置在那个像素点呢?

我们可以用一个很简单的方法,那就是截图!!需要将整个屏幕都截图下来

然后使用windows自带的画图工具打开

接着我们将鼠标放在打开图片的任意位置,“画图”的左下角就会有像素坐标显示

我们就可以通过这个方法来知道像素点位于何处啦!

然后我们继续介绍有关鼠标操作的方法

moveRel()

这个就是相对鼠标当前位置的移动:

pyautogui.moveRel(xOffset: , yOffset: , duration:)

我们先用position获取一下鼠标当前的位置:

x, y = pyautogui.position()
print(x, y)

这样就可以获取到鼠标的当前位置了,比如当前位置是(1966, 47)

这个时候使用moveRel():

pyautogui.moveRel(100, 100, 5)

也就意味着,之前的位置(1966, 47)个加了一百,也就是相对之前移动了

经过计算,相当于对之前的像素位置进行了向右下141.42距离的移动

click()

接下来我们要实现模拟鼠标点击的行为:

我们可以先设置好自己的鼠标想移动的位置:

pyautogui.moveTo(1414, 1570, 2)

然后就开始用click()的方法点击:

pyautogui.click()

鼠标就会自动点击那个点,我们也可以通过给click()传参的方式实现:

pyautogui.click(1414, 1570, button='left', duration=0.5)

button是控制鼠标左键(left)还是右键(right)以及中间的滚轮(middle)进行点击

接下来我们用另一种当时模拟点击:

pyautogui.mouseDown(1700, 1557) # 按下鼠标
pyautogui.mouseUp(1686, 1494) # 释放鼠标

双击鼠标

然后来了解双击;

使用doubleClick()方法来实现:

pyautuogui.doubleClick(1400, 1557)

这样就可以完成鼠标的连续点击了,还有控制右键和中键:

# 分别双击鼠标右键和鼠标中键
pyautogui.rightClick(1686, 1494), pyautogui.middleClick(1686, 1494)

下一步来介绍鼠标的拖动。

鼠标拖动

dragTo()方法

pyautogui.dragTo(1640, 1557, duration=2)

这样就可以完成拖动功能了,除了dragTo()还有dragRel()和move一样,以此类推。

滚动

scroll()方法

pyautogui.scroll(800)

这个方法可以将模拟鼠标中键进行滚动,正数向上,负数向下

比如我在这个页面

运行

pyautogui.scroll(5000)

就可以直接回到页首

OK!!鼠标的模拟就完成了,接下来是键盘

键盘控制

首先是keyDown(),keyUp()方法,学过trule的人应该能反应过来

跟turtle的pen很相似

先实在来帮助大家理解,模拟一个ctrl+c复制

pyautogui.keyDown('ctrl')
pyautogui.keyDown("c")
pyautogui.keyUp("c")
pyautogui.keyUp('ctrl')

keyDown()是按下,那keyUp()就是拿起

当时如果都这样写的话就很麻烦,所以pyautogui又提供了一个不一样的方法

热键:

hotkey()

我们可以直接在里面输入两个键,然后同时执行:

pyautogui.hotkey('ctrl', 'c')

这样就可以直接完成热键的模拟了

那如果我想在页面上输入文字怎么办,那我们就要用到一个新方法了。

typewrite()

比如我们要使用pyautogui在浏览器里输入一些瑟瑟的网址(。◕‿◕。)

pyautogui.typewrite('http://*****.***/***/*/****', interval=0.1)

里面的第一个参数是message,也就是你要输入的内容

而interval,则是你输入每个字符的时间间隔,相当于每隔0.1秒就输入这个网址的一部分

press()

如果只是需要简单的完成普通的按键行为,以及一些特殊的按键比如enter,可以使用press()

简单且高效

pyautogui.press('enter', interval=0.1)

就可以实现啦,第一个是需要按下的按键,第二个是间隔的时间

OK!本章就到此结束了

任务

在此也就留下一个小任务,那就是:

用pyautogui库在浏览器了输入自己珍藏的瑟瑟网址并进入吧✧(≖ ◡ ≖✿)

使用了pyautogui都不需要手动输入了呢 ✧(≖ ◡ ≖✿)

----------

本章到此结束

希望能帮助到你!!(♡˙︶˙♡) 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

#include<at89x52.h> #include<INTRINS.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define CLOCK P1_0 #define D_IN P1_1 #define D_OUT P1_2 #define _CS P1_3 sbit g1=P2^7; sbit g2=P2^1; sbit g3=P2^3; sbit g4=P2^5; ulong AD_ad1,AD_ad2; float JiZhun_AD=2.5; float AD_Data=0.0; ulong AD_ad=0; char chi; unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void delay02s(void) { unsigned char i,j,k; for(i=1;i>0;i--) for(j=10;j>0;j--) for(k=200;k>0;k--); } uint read1543(uchar port) { uint ad; uint i; uchar al=0,ah=0; CLOCK=0; _CS=0; port<<=4; for (i=0;i<4;i++) //将四位通道地址送1543 { D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0; port<<=1; } for (i=0;i<6;i++) //填6个CLOCK信号 { CLOCK=1;CLOCK=0; } _CS=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); _CS=0; //等待AD转换结束 _nop_();_nop_();_nop_(); for (i=0;i<2;i++) //D9,D8 { D_OUT=1;CLOCK=1;ah<<=1; if (D_OUT) ah +=0x01; CLOCK=0; } for (i=0;i<8;i++) //取出D7--D0 { D_OUT=1;CLOCK=1;al <<= 1; if (D_OUT) al +=0x01; CLOCK=0; } _CS=1; ad = (uint)ah; ad <<= 8; ad +=(uint)al; // return(ad); } void main() { TMOD=0x01; TH0=(65535-20000)/255; TL0=(65535-20000)%255; EA=1;ET0=1;TR0=1; while(1) { P0=table[(AD_ad)]; g1=1; delay02s(); g1=0; P0=table[(AD_ad/10)]; g2=1; delay02s(); g2=0; P0=table[(AD_ad/100)]; g3=1; delay02s(); g3=0; P0=table[(AD_ad/1000)]|0X80; g4=1; delay02s(); g4=0; } } zhongduan()interrupt 1 { TH0=(65535-20000)/255; TL0=(65535-20000)%255; chi++; if(chi==50) { chi=0; AD_ad1 = read1543(0); // (通道0电压正端) AD_Data = ((float)AD_ad1)*JiZhun_AD*2/1024+0.15005;//0.15经过实测需要加0.15减少误差 AD_ad =((AD_Data-2.68)/0.185)*1000; } }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值