在之前呢, 我们讲过, 怎样去使用, 在浏览器里实现页面自动化操作事宜。不管是通过哪种方式来实现这个, 都是历经定位页面之中的元素, 进而开展相应的操作的。
当今时日, 我们着手来商讨一番关于究竟怎样于桌面达成自动化操控操作。跟浏览器页面自动化操纵工作相类似, 桌面自动化操控同样是需求确定位于于桌面上鼠标所处的定位地方所在位置, 之后借由所确定定位的地方去付诸施行相对应的操控行动。
GUI 控制神器
今天我们所讲的主人公啊 , 它呢是这样个东西 , 其一它是只具备纯粹性质的 , 名为 GUI 的用于自动化的工具 , 而且再凭借它呀 , 能够使程序去操控控制鼠标 , 控制键盘这样一套完整有序的一连串操作 , 进而达成实现自动化测试为达到的那个目标。
这个模块的安装也是老一套:
pip3
安装好了就可以直接使用了。
鼠标操作鼠标移动
桌面操作最基本的就是鼠标操作了,我们可以控制鼠标的移动:
# 移动鼠标
.(200,400,=2)
.(200,500,=2)
整个桌面, 将左上角当作坐标轴的原点, 所有操作, 都凭借这个原点, 去确定操作位置。
首先, 第一行, 是把鼠标挪动到标明的像素位置, 此位置为(200, 400) ;其次, 第二行代码,是让鼠标依照当下这个点, 朝着向右移动200px, 且向下移动400px的这般方向去移动。
两行代码里, 存在着一个共有的参数, 这个参数所表达的是移动时间, 也就是在能够明确指定的时间范围之内, 去完成移动操作, 其单位是秒。
运行这两行代码,观察屏幕鼠标的变化,是不是很神奇?
我们还可以获取鼠标位置:
print(.())
这般是极易明白的, 也就是去获取鼠标于当下屏幕里的坐标位置, 运行此一行代码, 我们会得到类似如下这般的信息:
Point(x=400, y=900)鼠标点击
一般来讲, 我们所用的鼠标存在左右这两个按键, 较为高级些的鼠标在中间部位还设有一个按键。
我的鼠标只有两个按键,中间没有按键,唉~
针对这三个按键操作都有相应的处理:
# 鼠标点击,默认左键
.click(100,100)
# 单击左键
.click(100,100,='left')
# 单击右键
.click(100,300,='right')
# 单击中间
.click(100,300,='')
鼠标进行点击操作时, 要是没有对参数予以指定, 会呈现出默认点击左键的状况, 而前面的那两个参数所代表的便是点击坐标所处的位置。
运行这段代码,看看你的桌面会发生什么?
鼠标除了点击操作,还有双击操作:
# 双击左键
.(10,10)
# 双击右键
.(10,10)
# 双击中键
.(10,10)
进行操作的函数同样是十分简单的, 能够满怀信心地认为大家只要看一眼便可以看得明白的, 要是看一眼没有办法看得明白的话, 那么就请再多看几次吧!
眼熟前端的小伙伴们, 或许会立刻联想到, 鼠标进行操作时, 存在按下以及释放这样的经过, 而我们针对屏幕开展的操作, 同样有着与之相对应的控制:
# 鼠标按下
.()
# 鼠标释放
.()
鼠标拖动
我们可以控制鼠标拖动到指定坐标位置,并且设置操作时间:
.(100,300,=1)
这个运行效果和前面移动类似。
根据前面移动的经验,我们也有按照方向拖动鼠标:
.(100,300,=4)
鼠标滚动
于桌面操作之际, 我们有时所需的是, 滚动鼠标抵达向上亦或向下的位置, 而此时, 我们能运用这个函数予以控制:
.(30000)
有这样一个参数, 它属于整数范畴, 其作用是表明向上或者向下滚动的单位数量, 而这个单位, 依据不同的操作系统, 有可能是不一样的。要是进行向上滚动操作, 那么就要传入正整数, 若进行向下滚动操作, 则需传入负整数。
屏幕处理获取屏幕截图
咱们先设定一个情景, 我当下要于屏幕之上寻觅一个个红色点儿, 你会采取怎样一番作为呢, 经由取得该呈现红色的点儿的色彩数值之举, 并接着针对屏幕里的点儿逐一展开比较, 一直找寻到才算完结。
对于我们营造的这个操作场景予以了支持, 存在着分别能够完成这三件事情的三个函数。
im = .()
im.save('.png')
rgb = im.((100, 500))
print(rgb)
相匹配的内容是, 点, 坐标为五百、五百, 括号内为十二、一百二十、四百。
print(match)
第一个函数是用于获取屏幕截图的, 它能够返回一个image对象, 第二个函数是能获取屏幕截图里指定坐标点颜色的, 会返回rgb颜色值, 第三个函数是要把指定坐标点的颜色与目标的颜色进行比对的, 会返回布尔值。
我们再来升级一下需求:
我现在要在屏幕上找到 edge 浏览器的图标,你会怎么做?
一般的做法是, 先晓得 edge 浏览器的图标呈现何种模样, 是绿的还是蓝色的, 是形态较饱满还是较为纤细的, 对不对? 而后再于显示屏上去做图标匹配, 直至寻觅到一个图标与我们所需目标图标一致, 如此便得到了相应结果。
于是,我们的代码如下:
# 图像识别(一个)
= .('1.png')
print()
# 图像识别(多个)
= .('1.png')
print(list())
于桌面上, 你能够把某一应用的图标给截取下来, 将其保存成图片去, 随后运用上方的几行代码予以识别, 若识别顺利, 你便会返回类似于下面这样的结果:
创建一个框, 其左边位置为20, 上边位置为89, 框的宽度是33, 高度是34。
Box(left=20, top=89, width=33, =34)
这就是体现图片于桌面所处位置的情况呢, 要是寻觅不到图片, 接着就会返回None。
键盘输入键盘函数
键盘输入有下面几个常用的函数:
举个例子,大家平时输入感叹号(!)是怎么操作键盘的?
按着 shift 按键, 接着再按着 1 按键, 如此便行了。运用控制即为:
.('shift')
.press('1')
.keyUp('shift')
执行上面那代码, 要是你的鼠标正处于编辑框里头, 你便能收获一个感叹号!
我们还可以直接输出内容:
.('', 1)
第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。
运行出现在代码之上所提到的内容, 你的编辑器当中就会每隔1秒钟按照顺序输出 , 的6个字母。
特殊符号
有些时候,我们会有这样的需求, 那就是要去输入键盘上的某些特殊的符号按下的按键, 像是 换行按键、方向键这类的按键, 而这些按键是有着相对应的键盘字符串来进行表示的:
.(
运行上面代码,编辑器里面就会输出 之后换行。
其他特殊按键对应的字符串请参考官方说明。
快捷键
要是本人打算去复制一项内容, 在多数情形之下会运用快捷键ctrl + c, 依据上面所讲述的, 咱们理应如此去实现。
.('ctrl')
.('c')
.keyUp('c')
.keyUp('ctrl')
这样写起来很麻烦,而且需要掌控按键的按下和释放的顺序。
为我们提供了一个快捷的函数:
.('ctrl','c')
实现的效果和上面的4行代码相同。
信息框
要是你处于这样一种情形, 即在对一项桌面操作予以模拟时,倘若存有分支操作, 而这分支操作得依据实际状况去做判断, 那么你是不是得有一处地方, 能供你去选择究竟走哪一个分支呢?
一种贴心被考虑到的情况是, 你能够借助弹出一个选择框的方式来中断当下正在进行的操作, 进而去选择操作分支。
way = .('领导,该走哪条路?', =
'农村路', '水路', '陆路'
print(way)
这儿便是我们HTML页面的选择框, 选了选项以后, 我们得以获取所选选项, 接着依据这个选项进行判断, 进而进入相应的操作分支。
除了选择确认框之外,还有其他一些提示信息框:
# 警告框
alert 等于, 进行.alert操作, 其文本内容设置为, ‘警告!敌军来袭!’, 标题设置为, ‘警告框’。
print(alert)
# 密码框
= .('请输入密码')
print()
# 普通输入框
input = .('请输入指令:')
print(input)
总结
就给大家把基本知识介绍到这里, 这个模块的功能是极为强大的, 其中函数都是相当简单的, 对初学者而言是比较友好的。在学习了这些基本知识以后, 你能够运用这些基本知识进行组合, 进而去实现一些有趣的桌面自动化操作, 赶紧去尝试一番!