python-自动化篇-终极工具-用GUI自动控制键盘和鼠标-pyautogui-处理屏幕

处理屏幕

pyautogui拥有屏幕快照的功能,可以根据当前屏幕的内容创建图形文件。这些函数也可以返回一个 Pillow 的 Image 对象,包含当前屏幕的内容。(需要安装 pillow 模块)。
在 Linux 计算机上,需要安装 scrot 程序,才能在 pyautogui中使用屏幕快照功能。在终端窗口中,执行 sudo apt-get install scrot,安装该程序。如果你使用 Windows或 OS X,就跳过这一步,继续本节的内容。

获取屏幕快照——screenshot()

要在 Python 中获取屏幕快照,就调用pyautogui.screenshot()函数。在交互式环境中输入以下内容:

import pyautogui
im = pyautogui.screenshot()

im 变量将包含一个屏幕快照的 Image 对象。现在可以调用 im 变量中 Image 对象的方法,就像所有其他 Image 对象一样。在交互式环境中输入以下内容:

im.getpixel((0, 0))
im.getpixel((50, 200))

在这里插入图片描述
在这里插入图片描述

getpixel() 函数传入坐标元组,如(0,0)或(50,200),它将告诉你图像中这些坐标处的像素颜色。getpixel() 函数的返回值是一个 RGB 元组,包含 3 个整数,表示像素的红绿蓝值(没有第四个值表示 alpha,因为屏幕快照是完全不透明的)。这就是你的程序“看到”当前屏幕上内容的方法。

分析屏幕快照——screenshot()

假设你的 GUI 自动化程序中,有一步是点击灰色按钮。在调用 click() 方法之前,你可以获取屏幕快照,查看脚本要点击处的像素。如果它的颜色和灰色按钮不一样,那么程序就知道出问题了。也许窗口发生了意外的移动,或者弹出式对话框挡住了该按钮。这时,不应该继续(可能会点击到错误的东西,造成严重破坏),程序可以“看到”它没有点击在正确的东西上,并自行停止。
如果屏幕上指定的 x、y 坐标处的像素与指定的颜色匹配,PyAutoGUIpixelMatchesColor() 函数将返回 True。第一和第二个参数是整数,对应 x 和 y 坐标。第三个参数是一个元组,包含 3 个整数,是屏幕像素必须匹配的 RGB 颜色。在交互式环境中输入以下内容:

import pyautogui
im = pyautogui.screenshot()
im.getpixel((50, 200))
# 输出(255,255,255)
pyautogui.pixelMatchesColor(50, 200, (255, 255, 255))
# 输出True
pyautogui.pixelMatchesColor(50, 200, (155, 255, 255))
# 输出Flase

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在获取屏幕快照,并用 getpixel() 函数取得特定坐标处像素颜色的 RGB 元组之后①,将同样的坐标和 RGB 元组传递给 pixelMatchesColor() ②,这应该返回 True。
然后改变 RBG 元组中的一个值,用同样的坐标再次调用 pixelMatches Color() ③,这应该返回 False。你的 GUI 自动化程序要调用 click() 之前,这种方法应该有用。
请注意,给定坐标处的颜色应该“完全”匹配。即使只是稍有差异(例如,是(255,255,254)而不是(255,255,255)),那么函数也会返回 False。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fo安方

觉得俺的文章还行,感谢打赏,爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值