大家好,上节课我们通过自动将鼠标移动到指定的坐标位置,然后实现打开浏览器并访问网页这样一个操作。但是他会有一个问题,就是如果我们这个浏览器的图标位置发生变化的时候,我 我们这个程序就不能再成功执行了,他很可能点击到其他的图标,例如这里我点击到了邮件的图标。这节课我来介绍如何通过定位这个浏览器图标的位置,然后实现打开一个网页的操作。这里我先新建一个拍子门键,叫做 fundbymen 缩写,然后我把上节课的代码全都复制到这个新的拍摄文件当中。上节课我们首先将鼠标移动到了指定的坐标,但是当浏览器的图标并没有在这个坐标的 时候,鼠标点击的时候也就点错了位置。所以这节课我用的方法是将浏览器的图标进行一次截图,把它的部分进行截屏,将截图起名为 icon, 点 png, 然后 png 文件考分裂到我们的项目当中。接着在程序里面我们就可以调用 派奥特 gui 的 locate on screen 这个方法,也就是在屏幕上定位这样一个方法。定位什么呢?也就是定位我们刚才截屏的这个 icon 点 png, 它的功能就是在当前的屏幕上来查找 与这个图片吻合的区域,然后把这个方法返回的对象复制给一个新的边量,叫做 icon log。 接着的代码我们可以保留上次的坐标位置来让鼠标移动到下面,这样可以打开程序屋。然 然后我们就可以判断 icon lock 这个对象他得到的是什么样的值,如果他一直保持的是浪的状态,就让他继续寻找,并且用 print 的语句打印出这个 icon lock 的值。 如果这个 lock the on screen 方法定位到了我们给出的这个图标,他就会跳出这个循环,然后就可以直接用这个 icon log 作为参数传递给派奥特之优爱的克里克方法。下面我们先进行看一下, 可以看到鼠标已经成功移到了下方,但是程序并没有找到这个图片,而是一直打印出这个 iclock 是空的状态。这时我们就要考虑有两种情况。首先我们要查看一下在系统编号设置里面,这个安全性与隐私里头 的屏幕录制是否添加进了终端这个应用程序。因为麦克 os 他是比较重视系统安全的,所以如果你要调用这个屏幕录制,你需要给他这个权限设置之后我们再进行看一下,可以看到这一次他就找到了这个 icon png 的位置, 他返回的对象是一个 box 类型的对象,也就是这个图标当前的区域。但这次还是没有成功打开浏览器,这是因为浏览器还没有及时打开,可是程序已经点击了这个图标的位置。 为了解决这个问题,我还是用定位这个屏幕上某个图片的位置来确定这个浏览器是否已经打开了。所以我们先打开一个浏览器,然后截取这个浏览器,打开时候地址栏显示的文字,然后把这个截取到 的地址栏默认显示的文字,这个截屏改名叫做 bross 点 png, 然后把它拖拽到我们的项目当中。接着在代码里面还是通过调用派奥特之 ui 的 ok 的 on screen 方法来定位这个刚才拷贝的这个 browser 点偏 g 返回的值付给变量 browser lock。 在 yo 循环里面还是不断判断这个 browser lock 是否等于空,也就是闹,如果等于的话就继续执行这个循环。在循环当中还是在不断的定位这个图片,并打印出 browser lock 这个变量的字,这里有一个地方写错了,在打印的时候应该把 icon log 变成 browser lock, 下面还是用 browser lock 作为参数传递给派 auto g u i 的 这个方法。这时候我们再来运行一下, 可以看到鼠标移到下方之后,他并没有找到浏览器图标,这也就是我们第二种情况,也就是有可能我们截的这个图标有略微的变化, 他可能也无法识别的,所以这时候可以再次截一下这个图标的截图,然后替换他原有的这个 icon 点 png 文件。做了这个重新替换之后,我再来运行看一下,可以看到这一次浏览器就成功打开了, 并且正确的访问到了必用的网站。录完这节课后,我发现运行这个程序还是并不能保证每一次都成功,如何来大大提高他的成 功率呢?其实在 locky on screen 这个方法里面添加一个参数就可以了,到底是什么样的参数呢?我将在我的公众号退役程序员的茶室里面进行补充,欢迎大家关注。
粉丝1006获赞6127

大家好,这个视频呢,我们来通过一个实力来具体讲解在屏幕中查找图片重心坐标的函数的使用方法。我们的想法是这样的,首先我们打开浏览器,然后让鼠标在浏览器里点击新建标签页按钮。先通过截屏软件呢 把加号按钮部分呢截取一张图片,将图片呢保存在工程文件夹里,首先导入 os 库, 然后导入 py 凹凸 gy 库,调用 osq 的系统函数,在参数里输入视频中的字幕串。这段代码的含义呢是打开谷歌浏览器, 调用 p y 凹凸 g u i 的在屏幕中定位图片中心位置的函数,以内置参数呢,配置定位图片的路径。这个图片呢就是刚才我们在屏幕中截取的那张图片。第二个参数呢,设置匹配的精准度 这里呢设置零点八,将返回的数据呢传递给变量 x 和 y, 用打印函数呢打印 x 和 y 直性代码。首先可以看到谷歌浏览器呢被打开, 然后呢批拍凹凸 gy 呢,开始在屏幕中查找我们设置的图片,返回编辑器可以看到成功呢获取了添加标签按钮的那张图片,在屏幕中的坐标位置 有了添加标签页按钮的直播信息,我们就可以通过鼠标的移动和点击来对它进行操作了。下个视频我们将继续完善这个实力。

你现在看到的是一个简单的微信自动聊天器的代码,让我们运行它。 运行他之后呢,我们打开微信的窗口,这个时候当你的女朋友发来消息时,他会预先帮你回复设置好的内容,当你有多个女朋友同时来消息时,他也能应对自如。 看完这个视频,你就能学会做这个。首先假定你已经安装了拍摄,那我们就来看一下 pyotgui 的使用方法吧。 它主要有三个模块构成,第一个是 鼠标操作,鼠标操作呢,我们有这么一些 api。 首先是木兔,一百和两百分别是 x 则和 y 则的坐标,这个方法的意思就是将鼠标移动到 x 则上为一百, y 则上面为两百的。这个 更多的 aps 用方法可自行查看 window。 接着第二个就是键盘操作,键盘操作有这么一些 api, 首先是 red, 它能写入英文的一些单词,能方便你快速的输入一些东西。更多的 aps 用方法可自行查看 window。 接着第三个是图像操作,图像操作呢,也有一些 api, 这个 project 选就是获取当前鼠标的 x 折和外 a 者的坐标赛,就是当前屏幕的尺寸,我现在屏幕的尺寸是幺九二零乘以幺零八零的。这个 这个就是载入一个图片,他会在屏幕上面识别这个图片,并返回他的坐标。接着我们要使用 pyotogoi 来实现一个微信自动聊天器, 他具备三个功能,第一个就是监听并回复消息,我们来看一下代码,首先呢,他得监听消息,所以我们就截了一个图,每次微信来消息时 都会有这么一个标识,然后我们使用了一个 wes 宣传,去监听屏幕上面有没有这个图片,如果有这张图片的话,我们就移动鼠标到这个图片的位置,然后就执行点击的事件,这里漂漂过还不能直接输入中文,我们就 使用派上酷派跑力来实现,然后只要执行他的 copy 方法,最后我们执行一下热线 hat, 最后使用热线按下回车就可以把消息发送出去了。 第二点就是自定义回复内容,可以看到这里我们定义了一个数组,然后使用快算库 random 随机返回一个恢复, 就可以实现随机回复预示内容的功能了哦。第三点就是多条消息的回复,对于多条消息的回复,我们也是使用了一个新的 api 或取桌面上多个消息标志, 并返回他们的坐标,然后使用一个 for 循环进上面,同样的操作就能达到同时回复多条消息的目的。最后微信自动聊天机的代码放在公众号上了,有需要的可以关注公众号程序员小兵回复微信聊天机获取,那我们下个视频见。

大家好,这节课开始我来介绍一下派奥特 gui 这个模块, 我们可以利用这个模块通过图像用户界面来实现自动化,来处理一些日常繁琐而且步骤单调的电脑操作。在这个网站上有介绍这个模块的文档,如果大家感兴趣的话可以来访问阅读一下。在使用这个模块之前,我要先来安装一下, 用的是 p 三命令,然后 insto 这个拍 out gui 安装成功之后,我们就可以在程序里面直接引入这个模块了。 这里我首先创建了一个拍摄文件叫做 get position, 然后再开头首先引入派 ot gui 这个模 快和我们待会要用到的 tom 这个模块,因为这里我希望先测试一下要用拍奥特之 ui 的 position 方法来得到当前鼠标的坐标位置, 所以这里我用了一个无限循环。在这个 yo 当中,首先打印当前的鼠标位置,也就是调用这个派奥特之 ui 的 position 方法来得到他的坐标值,然后再用 time 的 sleep 方法让他停一秒再去打印下一个坐标值。 写完这段代码之后,我就试着运行了一下,但是发现这个程序运行之后就没有什么反应了,我开始以为是 mikos 的一些我们一身的设置,可能是不让我去调用鼠标的当前位置,所以我查了 一下。在网上有的朋友建议在系统偏好设置里面的安全性与隐私当中,在辅助功能里面再允许下面的 app 控制您的电脑这个列表当中 添加上终端。出于系统安全的考虑,建议大家在平时不用的时候要把这个勾选去掉, 我试着操作之后的确也是可以运行了,只是他的速度还是非常慢。后来我发现在这个例子里面,即使不勾选终端,也可以取到 pc 升的值。运行开始很慢的原因可能是因为我的程序之前用来加载模块的时间太长了。 另外一点呢,由于我写的是一个无限循环,如果要退出这个程序,按 ctrl c 的话,他会报一个 keyboard interrupt 的异常的错误。所以呢,在程序里面,我可以 加一个踹 except 结构来把这个无限循环放在踹当中,然后再 except 里面接收到这个 keyboard interrupt 这个异常处理。如果接到这个被抛出的异常,我可以在前面加上 一个换行符,然后打印出 stop 这个启示,修改之后再次运行。如果要跳出程序的时候, 按下 ctrl c, 就不再有错误的提示了,而是直接弹出 stop 的提示。 初次体验派奥特之优爱这个模块的例子就介绍到这里,大家可以关注我的公众号退役成全的茶室来获得更多信息,我们下节课再见!




这次我们讲一下拍摄自动化的屏幕找图功能, 这个我上一次出了一期视频呢,就是拍成自动控制键盘鼠标啊,有一个库,我把它翻译成中文版,然后呢他能够进行一些自动化的活动, 但是呢没有涉及到关于图像的一些内容,他关于图像的有几个函数比较常用,这一次呢,我们就补全这个教程来介绍一下啊。 关于图像呢,有这么多这个用法没有讲,我们现在一次讲一下。首先是截图,这个我们知道微信里也有一个截图,我们现在截一张图,看跟微信截的是不是一样啊。这个首先呢,这个截 的用法是这样啊,自动啊,我们啊,这个刚才我没讲,因为我已经这个导入,我上一期这个啊导入就这样 啊,复制粘贴一下就行。这为什么要来一个消息框?因为你要切换到这个你需要操作的界面去啊,你让屏幕先卡一下,这样你切换过去点, ok, 才会继续进行点确定。 最后呢,我也提醒下自己的程序执行完毕。好,现在我们正式来讲截图和找图呢,都需要一个参数,就是图片的名字,图片的路径。这个图片在哪里 啊?我一会呢准备啊,这个截图啊,截一个,我这我先把原先写的删掉。 我刚才试验了一下啊,比如说我要截这个整张屏幕就用一个参数,这些我取名为一点 p n g 啊,全屏吧,取名为, 他有两个参数,截图第一个参数啊,只写第一个参数,代表呢截全屏,现在我要运行一下啊,当然这个还有一点就说明啊,后缀名,大家要取名为 png, 你要是取名 gpg, 他会有有些损失,就用 png 就写。 我现在就截这张屏幕,我点确定执行完毕啊,他就截了这现在这张屏幕,你看这多了一个全屏屏,就是这个这渠道,他还有一个参数,能够截取一个区 区域,这个区域怎么写呢?这个我这已经写好了。 区域, 这个区域呢?啊,我一般这个区域它是一个圆组,它有四个数据,它比较长,我这儿写一下,我们知道四个数据是什么呢?左上角的 x 坐标,左上角的外坐标,宽度还有高度。 当你可能不理解这些词,我用微信截图给大家分析一下这这他们的含义。 好,我们找到微信啊,找这个截图工具来看一下啊。我在微信中,你看我的鼠标在动,然后呢,这一个方框 中有一个 pos, 你把鼠标点一下,再往下拉一下,会看到有个方框,这个方框上面有个数字在在变动,这就是宽度和高度,这儿就是它的原坐标。 好,我们点击这个保存,你就得到了一张图片。那现在我不不截这一张,我呢,我准备做一个实际教程, 我有一次爬虫呢,想爬取这张啊,这个网页的,他有很多页,他是一个动态网页在变化,我想在这输入第几页,直接跳,避免了鼠标老师在这边移动的不太方便,在这输入第几页。但是呢,我又不想 啊,不想取他的坐标,因为有时候在这啊,这个我用截图的方法,顺便讲这个例子 啊,我怎么办呢?我就用微信截这个地方,刚刚我用那个微信截了,保存一下就行。我现在先解释一下这个这个库的接触方法 啊,我截的时候建议大家这样截,这样截呢,你不要老是截这个空白处,你要截空白处,这个图片就是一片空白,那么这都是空白。你要这样截,把你要找的这个点放到这个哪里呢? 我们要这个点放到这个图块的中间,这样截,截完我们可以直接找到这个中心点,这样呢使用就方便了。 好,我现在按一下键盘上的那个截屏键,键盘上有个键叫 print skren prtsc, 有时候检测我按一下 啊,然后呢打开这个画图。为什么要按一下打开画图呢?因为 我想比较一下这个这个数据,记录一下这个数据,但是这个数据呢,有一点不一样,刚才我讲到,你看这是宽度和高度没错,但这呢是右下角的数 坐标,这是右下角,我们这个程序要求左下角,那怎么办呢?我们用这一个右下角的减去宽度和高度不就行了吗?啊,这为了节约时间,我已经写好了 啊,你看,我写着,就是,我刚才就比照着这个 x y 写到这里啊,比较的这个宽度和高度。写到这里啊,但是这个宽,这个 x y 呢,我减去了宽度,减去了高度,这样就可以得到左上角的这个宽度高度了。那现在我截一下啊,这个这一次我不叫全屏了啊,因为 他不是全屏了,我取名叫下一页运行一下啊,我切到这一页,点击啊,这个截图很快 啊,就在这双击,你看截到这一页跟我微信选的这几乎是一样的 啊,这张截图呢,很简单啊,我们一般不这样截,还是用微信截啊,什么时候截呢?就是截取多张图片,写一个循环,现在截 截图。讲完了,我们讲一下找图,找图,自动点找图, 找图的这个参数呢?还是这个图片滤镜,我们就找下一页,就在屏幕中找一下有没有这种样子,找到之后返回这个图片的一个数据,返回实际上是四个数,就是我们刚才看到那四个数,我们来演示一下, 现在就查找一张图片,程序运行到这,他会把电脑的这个图片读取一下,然后就在屏幕上找有没有这张图,我如果在这个屏幕上找肯定找不到, 找不到会怎么样呢?找不到会输出一个空啊,但我没有输出,我输出一点,把这个 保存了一个遍了,取名叫图片位置, 再来一次。 好,现在得到一个空 number, 就是空的意思。现在我们去有这张图片的网页来找一下, 点击确定。这个速度呢,有点慢,因为他先要读取图片啊,然后呢再找,屏幕上比较大,他不好找啊,刚才我的鼠标也是在动,也会干扰他啊。那我刚才说的不该动的,你的鼠鼠标在动 啊,屏幕在发生变化,他也影响速度,但要注意,你要找图的时候啊,手呢要离开键盘,鼠标刚才太慢,就是因为我的鼠标,我刚才讲解的时候啊,手呢在动,这样不好,好,现在找, 再看到有个括号是一个圆组,我说这个圆组怎么得到他呢?你可以这样得到,然后举一个例子,你可以这样,呃,这个圆组有四个数,你就用图片位置的那个锁紧就行了。比如说我们来一个移动到,我们把鼠标直到 这个图片的左上角,前两个数据就是左上角,我们指到这个左上角,左上角的 x 就是图片位置这四个数的第零个,这个是第一个,如果你想不是左上角,而是偏右一点,你就再加上几就行了。 好,再运行一次,这一次我点了啊,我用空格键来点吧,点完了就不再动,看一下鼠标, 鼠标会不会移过去。找的比较慢啊,刚才我的手又又动了一下。啊,为什么呢?因为现在出现了一个陕西省咸阳市,那个他会对屏幕有干扰。好,现在已经移动到了啊,有点慢 啊,最好找到一个位置啊,先把再来一次, 他本身还是比较慢的,因为这个屏幕他比较大,这时候大家就一定手不要乱动,我现在放这啊,放这不乱动,这样可能会快一点找完,你看我的鼠标会自动被移动过去, 还在找我的电脑速度, cpu 不大。好,跟 cpu 有关的,跟那个显卡都 有关系。好,现在找到并指过去了,显示一个执行完毕。 啊,这就是找图,找,找图呢,我们找到的是屏幕的左上角和宽度和高度,但是我们截图的时候,我故意的把我要取的这个位置固定到屏幕的中央,这样呢,我们可以利用一个函数,还有一个函数叫做找图中心, 这个找图中心云,他就返回图片的中心位置,他返回的不太一样。 好,现在我再加一个参数,刚才看的不太清晰,这三个参数叫持续时间,我让他两秒钟之内转过去,这样他会慢悠悠的我们看到鼠标的轨迹。好,现在我改成找图中心了,大家看一下会有一个什么效果? 我把这个鼠标放这,这样呢就会减少一些干扰。 还没找到 啊,找到了,鼠标在慢慢移动, 假装我们一般不需要这个鼠标的移动时间,这个有点太慢了, 这个是为了给大家演示一下啊,他输出了什么呢?就输出了一个 x y 啊,这个 x y, 刚才大家也看到他移到了这,这个位置就是这张图片的中心位置啊,这个还比较常用,比那个找出啊更加常用一些,因为找出来有四个数据,宽度、高度一般不太需 好,下面我们看这个多处找出啊,多处找出什么用呢?我们说有时候呢,屏幕中有这个一样的图片,好几个位置,然后这个图片没有啊,我举一个例子吧,我举这个例子, 在我这个文件夹里,你看就有好多种这种 d l 文件,它的图片是这个,现在呢我就要找一下这个图片,这个怎么找呢啊?我现在我就不用那个那个截图,我直接用这个微信截图,我就截这个, 我就找这个图片。保存啊,我保存,为什么呢?我实际上已经保存了一个,我就覆盖总原先那个,我取名叫 d i r 图标 啊,这个我的文件夹在哪里呢? 我找到它,我存到这个地方, d l l 图标呢? d 在这 啊,这个现在我就要找这个多处导图, 但是呢他不在同一个目录下,我把这个目录的目录的位置复制一下, 缺一个斜杠,这个颜色变化是因为这个斜杠是一个转移之谱,要保留原先的样子,应该加一个二,这样呢就是一个 support 啊,这一次我们来一个多处找,他会找到好几个,好几个图片位置,就有好多个了啊,那怎么办呢?那图片位置他不是一个位置了,现在啊,就是 教学我们他有多个位置,他是一个啊,相当于圆组或者相当于列表,是那种可以循环的,我们来循环一下,循环这个位置需要循环一下。好,现在我们就输出一下, 输出小灯啊,我这张这个文件夹里面有那么多图片,他会输出好几个,我们看一下,结果现在我就运行,然后到这个文件夹 点, ok, 他就开始找了。啊,这个屏幕应该好找一下,这一次因为他啊,因为这个屏幕颜色比较单一,刚才那个网页上他字多,这个像素多,他就会慢一点啊,这一次很快 来看,输出了好多这种那个四个数的元素。然后呢你就可以利用这个,利用他来执行一下 好了,如果比如说执行这你的鼠标在依次点击了改名了什么的,可以做这些动作。那现在我们这个就讲完了, 我们再讲一下获取颜色。获取颜色呢?我们知道这个刚才微信操作的时候,我们看到你把鼠标放到一个位置,这儿就有 rgb, 这个就是颜色啊, 不知道大家理解这个 rgb 没有白颜色,比如说这个右下角这是白颜色,正好白颜色就是三个二五五,它的数字从零二五零开始,黑色是全零啊,三个零。 行,现在我来试验一下,自动这个颜色跟颜色有关,你输颜色就能看到获取坐标颜色,现在我们先获取这个鼠标所在的位置, 当前位置等于自动点,自动点什么呢?鼠标位置, 我想获取当前的位置啊,获取完之后当然要输出一下 啊,这有一个波浪线代表有点错误,因为当前的位置呢,它有 x, 有 y, 这个坐坐标,当前位置,它实际上是一个圆组,我们来个缩影, y 就是它的第一个数据。 好,现在我们试验一下,我把鼠标放到这个位置,你看这位是白色,我用键盘来控制这个确定版, 就得到了黑色啊,这个白色三个二五五。如果我把鼠标放在很黑的一个位置,可能会得到零零零啊,或者说这也不是极端的黑,也可能是比零零稍微高一点的,这个会来试一下。这样吧,我把鼠标 放到这,这肯定是黑,我用键盘控制这一个确定键盘按空着或回车。好,执行完毕。我们看一下,就三个零啊,那是非常的黑啊,如果是这样的话, 就没这么黑了,这样吧,我看一下红色吧,我把鼠标放这,这有点这个红色 啊,你看到这个它不是 r g b 吗?红颜色多一些啊,这色也不是非常红啊,刚才那个红色消失了。 讲,反正呢,就是得到这么一个参数,是 rgb 颜色啊,既然有能得到,它还可以匹配颜色,这时候用于什么呢?一般我们用于一些屏幕变化的因素,比如说你屏幕不在这一页,你点了之后进入下一页,进入下一页之后呢? 啊,这个会变化,比如说刚才是白色,现在变成蓝色,这是返回不了了。这样啊,我们就可以匹配颜色,匹配颜色呢,我直接写一下吧,自动点颜色, 这个我用的不太多,这个匹配颜色,比如说你要匹配这种颜色 啊,不用这种,我们用这啊,这个他的名字叫像素颜色匹配,他首先要写入这个像素, 就 x y, 这一次我干脆把这儿复制过来,当前位置,这个当前位置, 当前位置的颜色还有一个参数,这个颜色就这种参数要写一个括号,就是一个圆组一个括号啊,比如说我们这样吧,判断这是不是白色吧,我就写二五五,这样就行 啊,这个还得输出一下,这叫匹配结果, yeah, 这个匹配结果输出呢?他有两个,两种情况,一个就是是或否啊,就是真或假。 好,现在我们把鼠标放到这个白颜色区域看,他应该输出一个针, 看是出了一个针,因为我刚才鼠标的位置很白,我如果把鼠标的位置放到这,这就很不白了,那就是出一个放手。 这个我用的不太多啊,用于屏幕发生变化,你呢?在这暂停上几秒,我们可以用等待那个函数,当它属于这个中文拍摄的,可以写上一个等待啊, 等待十秒钟啊,等待我这个二秒屏幕发生变化了吗?如果你输出得到一个这个针,就说明屏幕变化了,而且得到的是你需要的这个变化。 好,这就是今天的内容,希望大家呢这个尝试使用一下。