Python 自动化 操作软件(二)
需求:
1、自动读取文件数据,作为被控软件内容的输入
2、随机挑选协议
3、判断协议对应的数据类型(设备数据:01 能源数据:02 状态数据:03 控制数据:04)
实战:
# -*-coding:utf-8-*-
import os
import time
import win32gui
import win32api
import win32con
from Lib.PyUserInput.pykeyboard import PyKeyboard
from ctypes import *
import random
a1 = ["06 00 02 00 00 00 00 00 00 00 00 00 00 00 00", "180A", "CB", "01", "5A 00 00 00 00"]
a2 = ["06 00 02 00 00 00 00 00 00 00 00 00 00 00 00", "180A", "CB", "02", "5A 00 00 00 00"]
a3 = ["06 00 02 00 00 00 00 00 00 00 00 00 00 00 00", "180A", "CB", "03", "5A 00 00 00 00"]
a4 = ["06 00 02 00 00 00 00 00 00 00 00 00 00 00 00", "180A", "CB", "04", "5A 00 00 00 00"]
A = [a1, a2, a3, a4]
def mouseClick():
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN | win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
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):
a = random.randint(0, len(A)-1)
#鼠标定位到Add GDC图标框
moveMouseToPos(11,12)
#点击 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(A[a][0])
# 按Tab 键,切换到 connect
#k.tap_key(k.tap_key, n=2)
#定位到connect
moveMouseToPos(12,120)
#点击connect
mouseClick()
#tab键 切换到设备信息
k.tap_key(k.tab_key)
#输入 协议号
inputData(A[a][1])
#Tab 切换
k.tap_key(k.tab_key)
#输入地址码
inputData(A[a][2])
#定位到 Send DevInfo
moveMouseToPos(13,89)
#点击Send DevInfo 发送设备信息
mouseClick()
#energy, state, control数据测试
k.tap_key(k.tab_key)
#方法一,全键盘控制
#跳转到DataType选择,上下键选择
#moveDataType(A[a][3])
#方法二,全鼠标控制
#定位到DataType选择框,默认选中 energy
moveMouseToPos(490, 242)
#点击
mouseClick()
#通过定位选择数据类型,选择 state
#moveMouseToPos(490, 270)
#mouseClick()
#选择 control
moveMouseToPos(490, 282)
mouseClick()
k.tap_key(k.tab_key)
inputData(A[a][4])
#方法一,全部按键控制
k.tap_key(k.tab_key)
k.tap_key(k.enter_key)
#方法二,全部鼠标控制
#moveMouseToPos(45,234)
#mouseClick()