当前位置:   article > 正文

【Python自动化控制电脑(模仿鼠标和键盘)】_自动化操作电脑

自动化操作电脑

@[TOC](这里写目录标题)
# 前言

例如:RPA机器人和按键精灵等技术或软件上的辅助,可以记录人工操作的步骤,做一些重复的工作。但是个人使用起来不是很灵活,一方面是软件收费,另一方面是办公安装限制。因此,尝试通过EXCEL来写控制命令,通过python进行执行,来辅助工作或娱乐等任务。

该方法效果:目前版本通过屏幕位点(X,Y)移动,通过中文指令进行模拟鼠标单击、双击、输入文字、左键按住、左键松开、键盘按键等操作,并每一步设置等待时间。代码详情如下:


一、用到的Python模块


1、tkinter:制作简单的操作界面;
2、pyautogui:模拟鼠标和键盘的操作
3、pandas:读取表格数据用
4、os:读取和保存用

  1. #coding:utf-8
  2. from tkinter import *
  3. from tkinter import filedialog
  4. #分割路径和文件名
  5. import  os.path
  6. #读取excel文件模块
  7. import pandas as pd
  8. #设想,读取excel列表,图片名称、单击、间隔时长、步骤说明
  9. import pyautogui
  10. #RPA自动控制
  11. pyautogui.FAILSAFE = True
  12. import time
  13. #控制时间
  14. class MYauto():
  15.     def __init__(self,init_window_name):
  16.         #传递实例化的窗口
  17.         self.init_windows_name = init_window_name
  18.         #文件路径self.folder
  19.         #excel内容self.Tj
  20.         #是否找到
  21.         self.isfind = 0
  22.     def set_init_window(self):
  23.         # 设置窗体标题
  24.         self.init_windows_name.title('(鼠标滑到左上角,停止程序)Python GUI MY.')
  25.         # 设置窗口大小和位置
  26.         self.init_windows_name.geometry('500x120+570+200')
  27.         self.label1 = Label(self.init_windows_name, text='请选择文件:')
  28.         self.text1 = Entry(self.init_windows_name, bg='white', width=30)
  29.         self.button1 = Button(self.init_windows_name, text='浏览', width=8, command=self.selectExcelfile)
  30.         self.button2 = Button(self.init_windows_name, text='开始', width=8, command=self.main)
  31.         self.button3 = Button(self.init_windows_name, text='停止', width=8, command=self.stop)
  32.         self.label1.pack()
  33.         self.text1.pack()
  34.         self.button1.pack()
  35.         self.button2.pack()
  36.         self.button3.pack()
  37.         self.label1.place(x=30, y=30)
  38.         self.text1.place(x=120, y=30)
  39.         self.button1.place(x=400, y=26)
  40.         self.button2.place(x=160, y=80)
  41.         self.button3.place(x=260, y=80)
  42.     def selectExcelfile(self):
  43.         #获取excel数据
  44.         self.file_path = filedialog.askopenfilename(title='选择Excel文件模板', filetypes=[('Excel', '*.xlsx'), ('All Files', '*')])
  45.         print(self.file_path)
  46.         self.text1.insert(INSERT, self.file_path)
  47.         #记录路径文件夹
  48.         self.file_folder,f = os.path.split(self.file_path)
  49.     def stop(self):
  50.         # 是否继续
  51.         pass
  52.     def operation(self,opt,key):
  53.         if opt == "单击":
  54.             pyautogui.click(button='left')
  55.         if opt == "双击":
  56.             pyautogui.doubleClick(button='left')
  57.         if opt == "按键":
  58.             pyautogui.press(key)
  59.         if opt == "输入":
  60.             pyautogui.typewrite(message=key,interval=0.2)
  61.         #if opt == "拖拽":
  62.             #pyautogui.dragTo
  63.         if opt == "左键按住":
  64.             pyautogui.mouseDown()
  65.         if opt == "左键松开":
  66.             pyautogui.mouseUp()
  67.     def main(self):
  68.         #读取excel配置文件内容
  69.         self.Tj = pd.read_excel(self.file_path, sheet_name='steps').reset_index()
  70.         #是否继续
  71.         self.isstart = 1
  72.         while self.isstart == 1:
  73.             for i_order in range(len(self.Tj['序号'])):
  74.                 if self.Tj['操作'][i_order] == "停止":
  75.                     self.isstart = 0
  76.                     print("结束啦~~~")
  77.                     break
  78.                 if pyautogui.position() == (0,0):
  79.                     self.isstart = 0
  80.                     print("结束啦~~~")
  81.                     break
  82.                 if self.Tj['方式'][i_order] == 0:
  83.                     #通过位点操作
  84.                     pyautogui.moveTo(self.Tj['点击位置X'][i_order], self.Tj['点击位置Y'][i_order])
  85.                     #相对移动pyautogui.moveRel()
  86.                     #进行各种操作
  87.                     #pyautogui.click()#单击
  88.                     self.operation(self.Tj['操作'][i_order],self.Tj['输入'][i_order])
  89.                     #print(self.Tj['点击位置X'][i_order]+','+self.Tj['点击位置Y'][i_order])
  90.                     time.sleep(self.Tj['等待时间'][i_order])
  91.         pass
  92. if  __name__ == '__main__':
  93.     init_window = Tk()              #实例化出一个父窗口
  94.     MAIN_PROCESS = MYauto(init_window)
  95.     # 设置根窗口默认属性
  96.     MAIN_PROCESS.set_init_window()
  97.     init_window.mainloop()


```

二、使用方法


1、运行代码
2、选择写好操作的excel文件
3、点开始运行,想停止就把鼠标快速挪到左上角。

此外,

1)方式写0,代表用像素位点去定位,方式写其他数字,目前是啥都不干;
2)点击位置可以通过截图工具查看,截图时都能看到坐标是多少;

3)等待时间是执行完当行操作后等待多久去下一行,单位为秒;

4)操作目前有单击、双击、输入、左键按住、左键松开、按键、停止这几个操作;

模板和可执行版本程序可以从链接里下载
https://download.csdn.net/download/weixin_44283188/89123517?spm=1001.2014.3001.5501

三、表格模板

程序所需的是这6列,只要列名一致就行。然后可以自己加序号、备注及各种辅助列。

方式点击位置X点击位置Y等待时间操作输入
02961930.1单击
0102200.1单击
0502600.1双击
01503030.1单击
01503030.1输入XXX24l

四、应用案例


1、某游戏固定任务(自由发挥)
比如某任务,需要点某任务、接任务、进行任务、完成后再去找某人接任务,循环进行。

(只用到单击一个操作)

2、工作特定情境-图形化批量建模
工作某特定情况时,需要手动建立数十个模型小图标,调整到合适大小,并按顺序整齐排列。手动操作,每个图标会有大有小,不整齐。在excel表中计算好所需操作后,形成类似如下的操作表,确定好一个位点后,其他位点可以算出来。

3、其他情景

比如连续点击,定时点击,刷课不息屏等。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/995635
推荐阅读
相关标签
  

闽ICP备14008679号