Python 自动化 操作软件(一)

工具:

语言:Python 3.7

编辑工具:PyCharm

第三方依赖包:

                            PyHook

                            PyWin32

                            PyUserInput

                            pyperclip

一、安装工具

1、python3.7的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中。

2、PyUserInput模块安装前需要安装PyWin32和PyHook模块。

下载地址:PyHook和PyWin32下载

安装命令:

在该文件对应的文件夹下右击打开命令窗口

输入:pip install pyHook‑1.5.1‑cp35‑cp35m‑win_amd64.whl

下载地址:PyUserInput下载

安装命令:

在该文件对应的文件夹下右击打开命令窗口

python setup.py install

3、安装pyperclip  (离线下载时,可能需要其他依赖,可以根据提示单独下载依赖)

下载地址:pyperclip下载

二、自动化

需求:自动化控制数据模拟器,自动发送底层原始帧,数据类型包括设备信息、能源数据、状态数据和控制数据

# -*-coding:utf-8-*-

import os

import time

import win32gui

import win32api

import win32con

import pyperclip

from pykeyboard import PyKeyboard

from ctypes import *


def mouseClick():

      win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

#不能输入中文字符,中文字符需要使用pyperclip复制粘贴

def inputData(data):

        k.type_string(data)

#封装鼠标定位函数

def moveMouseToPos(right, top):

         windll.user32.SetCurserPos(loginid[0] + right, loginid[1] + top)

#方法一,全部用键盘

def moveDataType(type):

        if type == 'energy'

            k.tap_key(k.up_key)

def moveDataType(type):       
        if type == 'state'         
            k.tap_key(k.down_key)

def moveDataType(type):     
        if type == 'control'           
              k.tap_key(k.down_key)

#方法二,全部用鼠标

def moveMouseToDataType(right, top):

        windll.user32.SetCursorPos(loginid[0] + right, loginid[1] + top)


if __name__ == "__main__":

#打开多少个模拟器

    for i in range(0, 1):

              #打开GDC

                os.system(r"F:\GDC.exe")

                time.sleep(0.2)

                #获取窗口句柄    #参数1是类名,参数2是软件的标题

                GDCMonique = win32gui.FindWindow(None,"GDC")


                #获得Add GDC位置,即当前窗口左上角和右下角坐标; (right, top, left, bottom)

                loginid = win32gui.GetWindowRect(GDCMonique)

                print (loginid)

                #模拟多少个请求

                for i in range(0, 10):

                        #鼠标定位到Add GDC图标框

                        moveMouseToPos(80, 50)

                        #点击 Add GDC

                        mouseClick()

                        #定义键盘

                        k = PyKeyboard()

                        #输入IP

                        inputData("172.17.160.42")

                        #点击Tab 键,切换到端口号

                        k.tap_key(k.tab_key)

                        time.sleep(0.1)

                        #输入端口号

                        inputData("9017")

                        #按 Tab 键,到网关号

                        k.tap_key(k.tab_key, n=2)

                        #输入网关号

                        inputData("00 00 00 00 00 00 00 00 00 00 00 00 00 00 00")

                        # 按Tab 键,切换到 connect

                        #k.tap_key(k.tap_key, n=2)

                        #定位到connect

                       moveMouseToPos(885, 110)

                        #点击connect

                        mouseClick()

                        #tab键 切换到设备信息

                        k.tap_key(k.tab_key)

                        #输入 协议号

                        inputData("1803")

                        #Tab 切换

                        k.tap_key(k.tab_key)

                        #输入地址码

                        inputData("06")

                        #定位到 Send DevInfo

                       moveMouseToPos(885, 180)

                        #点击Send DevInfo 发送设备信息

                        mouseClick()

                        #energy,  state,  control数据测试

                        k.tap_key(k.tab_key)

                        #方法一,全键盘控制

                        #跳转到DataType选择,上下键选择

                        #moveDataType("state")

                        #方法二,全鼠标控制

                        #定位到DataType选择框,默认选中 energy

                        moveMouseToPos(490, 242)

                        #点击

                        mouseClick()

                        #通过定位选择数据类型,选择 state

                        #moveMouseToPos(490, 270)

                        #mouseClick()

                        #选择 control

                        moveMouseToPos(490, 282)

                        mouseClick()

                        k.tap_key(k.tab_key)

                        inputData("00 00 00 01 01 02 03 00 00 00 F0 00 00 00 00")

                        #方法一,全部按键控制

                        k.tap_key(k.tab_key)

                        k.tap_key(k.enter_key)

                        #方法二,全部鼠标控制

                        #moveMouseToPos(885,235)

                        #mouseClick()

                      #或者直接选中自动发送,不用点击Send按钮了

                    #跳转到自动发送选择框

                    #k.tap_key(k.tab_key, n=2)

                    #点击选择框,选中

                    #mouseClick()

#k.type_string()不能发送中文字符,故使用pyperclip复制粘贴中文字符

pyperclip.copy('中文')

time.sleep(1)

k.press_key(k.control_key)

k.tap_key('v')

k.release_key(k.control_key)

#关闭当前窗口

win32gui.PostMessage( win32gui.FindWindow(None,"GDC") ,win32con.WM_CLOSE,0,0)



参考资料:

https://blog.csdn.net/weixin_34416754/article/details/93618058

https://blog.csdn.net/sessos/article/details/88599210

http://timgolden.me.uk/pywin32-docs/win32api.html

https://www.cnblogs.com/lqn404/p/11194692.html

https://blog.csdn.net/lilongsy/article/details/81607793

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook

https://www.cnblogs.com/wuxunyan/p/9366178.html

你可能感兴趣的:(Python 自动化 操作软件(一))