python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维
来源:互联网 发布:广电网络市场营销感悟 编辑:程序博客网 时间:2024/06/07 11:26
最近上一门网络课程。我们知道网络课程是没办法加速,而且会有弹窗定时(或者不定时)弹出来;而且你不处理弹窗是无法继续往下做的,这就导致我们只能是不是查看一下有没有弹窗出现,并去处理好,突然就有一个想法,我能不能让计算机来帮我操作,而我只需要看。
所以本着解决这个问题的想法,我想到了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)这个点
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 + pyauotogui 模块结合实现有flash显示自动化运维
- selenium实现web自动化登录模块+封装
- python使用Fabric模块实现自动化运维
- PyCharm安装selenium模块实现selenium自动化测试
- python+selenium自动化软件测试(第9章) :Logging模块
- python+selenium自动化软件测试(第9章) :Logging模块
- PAMIE- Python实现IE自动化的模块
- Python PAMIE模块实现IE自动化
- PAMIE- Python实现IE自动化的模块
- PAMIE- Python实现IE自动化的模块
- PAMIE- Python实现IE自动化的模块
- PAMIE- Python实现IE自动化的模块
- Python的模块与函数以及与自动化的结合
- Python自动化运维--系统基础信息模块
- python自动化运维学习之psutil模块
- python自动化运维学习-系统性能模块详解
- Python运维自动化开发之Paramiko模块
- Python运维自动化开发之Fabric模块
- Python3.6下Django使用mysql
- 30.笔记 MySQL学习——删除表
- [成长] 退役?再见~OI
- TCP
- 数据库管理权限
- python 自动化模块selenium + pyauotogui 模块结合实现有flash显示自动化运维
- 1、初识c语言总结
- 机器学习系列(二)k-近邻算法(1)
- 31.笔记 MySQL学习——索引表的存储
- 第二章 Linux的安装
- 别人家的技术leader是如何建设团队、管理人员、沟通工作的?
- 通过脚本的方式杀tomcat进程(shell脚本),shell中将一个文件的内容读出赋值给一个变量
- dict初始化、OrderedDict使用
- centos安装docker源ubuntu:16.04版本后,无法使用iptables命令原因和解决方法