python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维

最近上一门网络课程。我们知道网络课程是没办法加速,而且会有弹窗定时(或者不定时)弹出来;而且你不处理弹窗是无法继续往下做的,这就导致我们只能是不是查看一下有没有弹窗出现,并去处理好,突然就有一个想法,我能不能让计算机来帮我操作,而我只需要看。


所以本着解决这个问题的想法,我想到了python自动化运维,我采用了selenium库来处理网络课程,只需要提供账号密码(有的需要提供实时的验证码),由于识别验证码需要其它的库,简单起见,所以验证码也才有人工输入。输入之后,程序自动登录,找到对应的element并执行相应操作。但是这期间出现了几个小问题,待会一一解答。进入页面后,发现竟然是flash显示的iframe,显然查找找不到对应的element,查找所看到的只是一个swf文件,无法通过selenium进行下一步操作;查找资料,selenium对flash也是无能为力,flash是as语言开发的,selenium也是没办法处理。


虽然吧,问题重重,但是我既然开始了,我的项目我都放开一边了,我就开始查资料如何解决。控制浏览器是不行了,我就想到了简单的方法,控制鼠标移动,点击。好家伙,一找资料,发现还挺多的库支持的,比如pywin32  和 pyauotogui(简称pg),我用了后者。pg (pyautogui的简称啊) 使用简单,好操作吧。它是一种定位像素坐标的方法,我们知道电脑显示的图片是有像素的,包括网页也是,有的像素维度高,有的低,不过没什么影响的。

简介      python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维_第1张图片

  pyauotogui  

主要函数  

pg.moveTo(x,y) #移动到坐标为(x,y)的位置,位置的定义看上图,其实就是个直角坐标系,至于大小看个人电脑

pg.size()#显示当前电脑的分辨率 我的是 1366 x 768,左上角坐标是 (0,0),右下角是(1366,768),函数返回一个二元元组

pg.click(x,y) #控制鼠标点击(x,y)这个点

im = pg.screenshot() #返回当前点的像素

im.getpixel((x,y)) #返回(x,y)出的像素大小

pg.position() #返回鼠标当前位置

pg.pixelMatchesColor(50,200,(30,132,153)) #判断(50,200)这个点的像素值是不是(30,132,153)

loc = pg.loclocateOnScreenloc(image) #image是指图片的地址,返回的是匹配到的图片的像素的4维空间

x,y = pg.center(loc) #获取图片的中心坐标 ,这个结合上面的就是一个神器,比如网页定时有同样的东西弹出来,而且位置不一样,

那么我们怎么自动化处理它,就用上句结合本句就能完全OK,把要弹出来的截个图当image就OK了,当然有缺点,上面

pg.loclocateOnScreenloc(image)是匹配当前显示器显示的像素里有没有和image像素完全一样,注意是完全,有一点都不行。(所以有时候会失效)。


selenium:

各种find我就不提了,基本使用看其他博文。


问题1 : 无法操作flash ,已经解决了,用pyauotogui

问题2:出现 no such element等问题,很多时候一个标签点击后并不是跳转,而是出现一个小框框,如下

                                                          1第一幅图                         python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维_第2张图片

           第一幅图是没有点击的时候,第二幅是点击了登录之后。

         

  我们发现直接find是找不到登录按钮以及输入框,原因是你没有定位到登录框,可以看做是2层吧,他们通过第一幅图的登录键连接,只有点击了才回显示,否则隐藏。而且这不是iframe原理,所以不需要切换iframe。我们先通过id定位到这个隐藏的登录框,再定位输入框。你会发现,OK,注意定位登录框要正确,如果你定位了登录框还是出不来result,只能说明,你定位登录框没有对。

最后,结果完全o得k,实现了自动化上课,1minute 扫描一次是否有提示并处理,另外值得一提的是,这个不是爬虫,所以不会面临被限制ip的问题。所以自动化运维还有其他很多用途,比如敏感的 抢火车票,抢购等等,速度计算机快过单身30年男人的手速。


项目拟合性太强,就不上传了。需要联系qq--396202885.

你可能感兴趣的:(自动化网课)