美文网首页UI自动化测试
Python 自动化 操作软件(一)

Python 自动化 操作软件(一)

作者: Jeff_9021 | 来源:发表于2019-09-27 12:27 被阅读0次

    工具:

    语言: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 自动化 操作软件(一)

        本文链接:https://www.haomeiwen.com/subject/logaectx.html