小试pyautogui操作windows上的GUI

  

<强>一、需求场景:

大量的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;)   ,,,,,,,,,,,打破

<强>四、运行演示:

小试pyautogui操作windows上的GUI

<强>五、存在的问题:

有多台需要运行此脚本,缺少汇总反馈机制。

如果五轮过后还没登陆上,一般就是登陆不上了,还需要查别的原因,可以将失败的结果通过邮件发送到管理员邮箱。

小试pyautogui操作windows上的GUI