[置顶] python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维
2017-11-16 20:46
796 查看
最近上一门网络课程。我们知道网络课程是没办法加速,而且会有弹窗定时(或者不定时)弹出来;而且你不处理弹窗是无法继续往下做的,这就导致我们只能是不是查看一下有没有弹窗出现,并去处理好,突然就有一个想法,我能不能让计算机来帮我操作,而我只需要看。
所以本着解决这个问题的想法,我想到了python自动化运维,我采用了selenium库来处理网络课程,只需要提供账号密码(有的需要提供实时的验证码),由于识别验证码需要其它的库,简单起见,所以验证码也才有人工输入。输入之后,程序自动登录,找到对应的element并执行相应操作。但是这期间出现了几个小问题,待会一一解答。进入页面后,发现竟然是flash显示的iframe,显然查找找不到对应的element,查找所看到的只是一个swf文件,无法通过selenium进行下一步操作;查找资料,selenium对flash也是无能为力,flash是as语言开发的,selenium也是没办法处理。
虽然吧,问题重重,但是我既然开始了,我的项目我都放开一边了,我就开始查资料如何解决。控制浏览器是不行了,我就想到了简单的方法,控制鼠标移动,点击。好家伙,一找资料,发现还挺多的库支持的,比如pywin32 和 pyauotogui(简称pg),我用了后者。pg (pyautogui的简称啊) 使用简单,好操作吧。它是一种定位像素坐标的方法,我们知道电脑显示的图片是有像素的,包括网页也是,有的像素维度高,有的低,不过没什么影响的。
简介 :
pyauotogui
主要函数
pg.moveTo(x,y) #移动到坐标为(x,y)的位置,位置的定义看上图,其实就是个直角坐标系,至于大小看个人电脑
pg.size()#显示当前电脑的分辨率 我的是 1366 x 768,左上角坐标是 (0,0),右下角是(1366,768),函数返回一个二元元组
pg.click(x,y) #控制鼠标点击(x,y)这个点
4000
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
第一幅图是没有点击的时候,第二幅是点击了登录之后。
我们发现直接find是找不到登录按钮以及输入框,原因是你没有定位到登录框,可以看做是2层吧,他们通过第一幅图的登录键连接,只有点击了才回显示,否则隐藏。而且这不是iframe原理,所以不需要切换iframe。我们先通过id定位到这个隐藏的登录框,再定位输入框。你会发现,OK,注意定位登录框要正确,如果你定位了登录框还是出不来result,只能说明,你定位登录框没有对。
最后,结果完全o得k,实现了自动化上课,1minute 扫描一次是否有提示并处理,另外值得一提的是,这个不是爬虫,所以不会面临被限制ip的问题。所以自动化运维还有其他很多用途,比如敏感的 抢火车票,抢购等等,速度计算机快过单身30年男人的手速。
项目拟合性太强,就不上传了。需要联系qq--396202885.
所以本着解决这个问题的想法,我想到了python自动化运维,我采用了selenium库来处理网络课程,只需要提供账号密码(有的需要提供实时的验证码),由于识别验证码需要其它的库,简单起见,所以验证码也才有人工输入。输入之后,程序自动登录,找到对应的element并执行相应操作。但是这期间出现了几个小问题,待会一一解答。进入页面后,发现竟然是flash显示的iframe,显然查找找不到对应的element,查找所看到的只是一个swf文件,无法通过selenium进行下一步操作;查找资料,selenium对flash也是无能为力,flash是as语言开发的,selenium也是没办法处理。
虽然吧,问题重重,但是我既然开始了,我的项目我都放开一边了,我就开始查资料如何解决。控制浏览器是不行了,我就想到了简单的方法,控制鼠标移动,点击。好家伙,一找资料,发现还挺多的库支持的,比如pywin32 和 pyauotogui(简称pg),我用了后者。pg (pyautogui的简称啊) 使用简单,好操作吧。它是一种定位像素坐标的方法,我们知道电脑显示的图片是有像素的,包括网页也是,有的像素维度高,有的低,不过没什么影响的。
简介 :
pyauotogui
主要函数
pg.moveTo(x,y) #移动到坐标为(x,y)的位置,位置的定义看上图,其实就是个直角坐标系,至于大小看个人电脑
pg.size()#显示当前电脑的分辨率 我的是 1366 x 768,左上角坐标是 (0,0),右下角是(1366,768),函数返回一个二元元组
pg.click(x,y) #控制鼠标点击(x,y)这个点
4000
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
第一幅图是没有点击的时候,第二幅是点击了登录之后。
我们发现直接find是找不到登录按钮以及输入框,原因是你没有定位到登录框,可以看做是2层吧,他们通过第一幅图的登录键连接,只有点击了才回显示,否则隐藏。而且这不是iframe原理,所以不需要切换iframe。我们先通过id定位到这个隐藏的登录框,再定位输入框。你会发现,OK,注意定位登录框要正确,如果你定位了登录框还是出不来result,只能说明,你定位登录框没有对。
最后,结果完全o得k,实现了自动化上课,1minute 扫描一次是否有提示并处理,另外值得一提的是,这个不是爬虫,所以不会面临被限制ip的问题。所以自动化运维还有其他很多用途,比如敏感的 抢火车票,抢购等等,速度计算机快过单身30年男人的手速。
项目拟合性太强,就不上传了。需要联系qq--396202885.
相关文章推荐
- Python+selenium+unittest的GUI自动化框架实现
- python使用Fabric模块实现自动化运维
- Python自动化运维笔记(五):使用filecmp模块实现文件以及文件目录差异对比
- Python自动化运维笔记(七):XlsxWriter模块实现Excel操作(上)
- Python+selenium的GUI自动化实现
- python使用Fabric模块实现自动化运维
- PAMIE- Python实现IE自动化的模块
- Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
- Python+Selenium实现微博自动化爬虫
- js 实现标题模块置顶显示
- Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
- python结合selenium获取XX省交通违章数据的实现思路及代码
- 【python+selenium】python 模块中第一个自动化脚本
- 使用Fabric模块实现自动化运维
- 转:PAMIE- Python实现IE自动化的模块
- Selenium - Python下使用pageobject实现自动化测试
- Windows Server使用python实现自动化运维——开启系统更新服务
- 自动化运维Python系列(五)之常用模块
- Python自动化运维之常用模块—OS
- Selenium2.0与Flash(Flex)自动化实现