工作中会遇见很多重复性的工作,如何让自己懒一点,可以不用每天去做这些,而是去自动化完成一些市场呢?
首先,我们需要登录客户端,如plsql、qq、邮箱、钉钉等等,网上百度过很多方法,发现都是已txt文档和录屏软件为例,很难找到适合自己的方法。如何打开我们的客户端呢?其实我们脑海中会有一个很明确的思路。①找到程序目录,打开程序;②输入账号和密码,点击登录;③在系统中操作我们想要的数据。
实现此工作流程,首推pywinauto+ pyautuogui 来完成我们的需求。
pywinauto
可以点击下方链接访问学习
pywinauto知识点总结
如果是GUI的程序,用spy++这个微软的小工具来看,从类名前缀能看出是什么编写的程序。
通过spy工具可以定位出登录工具对应的窗口类名,登录窗口等信息,很遗憾的是,本人需要操作的程序无法识别具体输入框信息,只能定位到整个窗体。需通过pyautuogui 来解决定位问题
pyautogui-用gui自动化控制键盘和鼠标
鼠标控制常用命令
import pyautogui
pyautogui.PAUSE = 1 # 每次pyautogui后的等待时间
pyautogui.FAILSAFE = True # 自动防故障功能开启,将鼠标移到屏幕的左上角可停用代码
pyautogui.moveTo(100,200,duration=1) # 移动鼠标到指定位置(绝对位置),duration为移动时间
pyautogui.moveRel(10,20,duration=1) # 移动鼠标到指定位置(相对位置),duration为移动时间
x,y = pyautogui.size() # 获取屏幕的分辨率
x,y = pyautogui.position() # 获取鼠标的位置
pyautogui.mouseDown() # 按下鼠标按键
pyautogui.scroll() # 滚动鼠标
pyautogui.mouseUp() # 释放鼠标按键
pyautogui.click() # 点击鼠标,相当于按下和释放的封装组合
pyautogui.dragTo(100,200,duration=1) # 拖动鼠标到指定位置(绝对位置),duration为移动时间
pyautogui.moveRel(10,20,duration=1) # 拖动鼠标到指定位置(相对位置),duration为移动时间
im = pyautogui.screenshot() # 获取屏幕快照
im.getpixel((100,200)) # 返回坐标处的像素颜色,即RGB(红绿蓝)值
pyautogui.pixelMatchesColor(50,200,(130,135,144)) # 将屏幕上指定的x,y坐标处的像素与指定的颜色匹配
list(pyautogui.locateAllOnScreen('png.png')) # 获取png图片的位置,如果找到多个则默认返回一个list元组,如(643,745,70,29),分别为图像左边的X坐标,顶边的Y坐标,宽度,以及高度
pyautogui.locateOnScreen('png.png') # 获取图片的位置,结果如(643,745,70,29)
pyautogui.center((643,745,70,29)) # 获取中心值,结果如(678,759)
鼠标控制常用命令
pyautogui.typewrite('Hello World',0.25) # 打印出相应字符串,后面的时间为打印后等待的时间
pyautogui.keyDown() # 按下按键
pyautogui.keyUp() # 释放按键
pyautogui.press() # 点击按键,相当于按下和释放的集合
pyautogui.hotkey('Ctrl','c') # 热键组合,可以接受多个按键字符串参数,顺序按下,再按相反的顺序释放
pyautogui.KEYBOARD_KEYS # 查看PyKeyboard属性值
#显示一个简单的带文字和OK按钮的消息弹窗。用户点击后返回button的文字。
pyautogui.alert(text='', title='', button='OK')
# OK和Cancel按钮的消息弹窗
pyautogui.confirm(text='', title='', buttons=['OK', 'Cancel'])
# 10个按键0-9的消息弹窗
pyautogui.confirm(text='', title='', buttons=range(10))
用python截图函数,确认坐标位置
几个定位函数。都是从左上角原点开始向右向下搜索截图位置:
locateOnScreen(image,grayscale=False):返回找到的第一个截图Image对象在屏幕上的坐标(left, top, width,height),如果没找到返回None
locateCenterOnScreen(image, grayscale=False):返回找到的第一个截图Image对象在屏幕上的中心坐标(x, y),如果没找到返回None
locateAllOnScreen(image, grayscale=False):返回找到的所有相同截图Image对象在屏幕上的坐标(left, top, width, height)的生成器
locate(needleImage, haystackImage, grayscale=False):返回找到的第一个截图Image对象在haystackImage里面的坐标(left, top,width, height),如果没找到返回None
locateAll(needleImage, haystackImage, grayscale=False):返回找到的所有相同截图Image对象在haystackImage里面的坐标(left, top, width, height)的生成器
eg登录客户端实例
import pyautogui
buttonlocation = pyautogui.locateOnScreen('login.png',grayscale=True)#确认图片坐标位置
print(buttonlocation )
pyautogui.click(buttonlocation )#点击图片位置
pyautogui.typewrite('username',interval=0.25)#输入账号
是为了记录学习的一个状态,希望大家也在这条道路上越来越棒,目前建了一个扣扣群1095106956,每天都有新的人加入,期待大家的分享与交流,不知道是否是从这个平台进去的,感觉大家的信任,有新的想法的朋友,可以加入,一起探讨!