<强>一、需求场景:强>
大量的windows端上使用某公司的代理软件,不时会出现不可用的情况,多次反馈某公司无果,可又不能不用,只能是定期去重启一下。
<强>二,想法:强>
使用Python的pyautogui模块替代手动登陆。
<强>三,实践:强>
1,由于国际链路问题,往往不能一次就成功登陆。再打开软件时和点击登陆时均可能出现几次不等的登陆失败提示,需要点击好按钮确认。
2,程序会尝试进行五轮的登陆操作(使用对应的阶段的图片),期间检测到成功登陆则退出。
3,建脚本加入到开机启动(至于重启windows的任务就交给Ansible,将再其他文章进行详细说明)。
#,- *安康;编码:utf-8 - * - import 操作系统 import 时间 import 子流程 import pyautogui def kill_proc(描述,proc_name): ,,,试一试: ,,,,,,,印刷(& # 39;终止% s进程……& # 39;,%,(描述)) ,,,,,,,os.system (& # 39; taskkill /我% s /f # 39;, %, (proc_name)) ,,,except Exception as 原因: ,,,,,,,印刷(e) ,,,,,,, def run_proc(描述,proc_name): ,,,试一试: ,,,,,,,印刷(& # 39;启动% s进程……& # 39;,%,(描述)) ,,,,,,,subprocess.Popen (“% s", %, (proc_name)) ,,,,,,,time . sleep (8) ,,,except Exception as 原因: ,,,,,,,印刷(& # 39;启动进程失败! ! \ n错误的原因是:& # 39;,+,str(原因) ,,,,,,,os._exit (0) ,,,,,,, def check_img(描述,img_name): ,,,试一试: ,,,,,,,印刷(& # 39;查找% s图像& # 39;,%,(描述)) ,,,,,,,button =, pyautogui.locateOnScreen (“% s", %, (img_name)) ,,,,,,,印刷(按钮) ,,,,,,,if description ==, & # 39;成功# 39;: ,,,,,,,,,,,return 1 ,,,,,,,if 按钮: ,,,,,,,,,,,印刷(& # 39;点击% s图像& # 39;,%,(描述)) ,,,,,,,,,,,button_center =, pyautogui.center(按钮) ,,,,,,,,,,,pyautogui.click (button_center) ,,,,,,,,,,,time . sleep (1) ,,,except BaseException: ,,,,,,,印刷(& # 39;没有找到% s图像& # 39;,%,(描述)) ,,,,,,,return 0 ,,,,,,, if __name__ ==, & # 39; __main__ # 39;: ,,,count =1 ,,,kill_proc (& # 39; 911 & # 39;, & # 39; Client.exe& # 39;) ,,,run_proc (& # 39; 911 & # 39;,, " # 39; C: \ 911 s5 2018 - 05 - 23,固定\ Client.exe& # 39;) ,,,for 小姐:拷贝范围(5): ,,,,,,,印刷(& # 39;=====进行第% s轮检查=====& # 39;,%,(计数) ,,,,,,,count +=1 ,,,,,,,check_img (& # 39; OK1& # 39;,, & # 39; C: \ \ restart911 \ \ error_OK1.PNG& # 39;) ,,,,,,,check_img (& # 39; OK2& # 39;,, & # 39; C: \ \ restart911 \ \ error_OK2.PNG& # 39;) ,,,,,,,check_img(& # 39;登录# 39;,,& # 39;C: \ \ restart911 \ \ Login.PNG& # 39;) ,,,,,,,time . sleep (5) ,,,,,,,if check_img(& # 39;成功# 39;,,& # 39;C: \ \ restart911 \ \ success.PNG& # 39;): ,,,,,,,,,,,印刷(& # 39;执行成功! ! & # 39;) ,,,,,,,,,,,打破
<强>四、运行演示:强>
<强>五、存在的问题:强>
有多台需要运行此脚本,缺少汇总反馈机制。
如果五轮过后还没登陆上,一般就是登陆不上了,还需要查别的原因,可以将失败的结果通过邮件发送到管理员邮箱。