Resumen de pruebas automatizadas de aprendizaje de programación

En la prueba presente automatizado de contacto Existen dos bibliotecas principales: 1, selenio 2, win32gui

1, selenio: para el funcionamiento de un navegador, el acceso a la información de la web

 

2, win32gui, win32api, win32con además de obtener una herramienta de mango (Spy ++, etc.) utilizados para operar el software no es un navegador, pero no todos los controles de todo el software puede conseguir conseguir una manija

Para esos botones no reconoce el mango, que se utiliza actualmente en una forma que encuentro todo el control de la empuñadura, y luego encontrar las coordenadas de este control a través de las coordenadas de control de impresión, y luego el camino win32gui simular una operación de clic del ratón.

def mouse_left_click(button):  #鼠标移动到元素位置,点击鼠标左键
    left, top, right, bottom = win32gui.GetWindowRect(button) #获取按钮句柄的坐标
    #print(left,top,right,bottom)
    win32api.SetCursorPos((left+5,top+5)) #设置鼠标位置
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)  #按住鼠标左键
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)  #释放鼠标左键

botón para obtener el identificador de la siguiente manera:

button=win32gui.FindWindow('Button',u'开始')

Donde 'botón' para el nombre de la clase, 'start' es el título (sin título comparación Ninguno), se puede ver en el espionaje ++.

Si la ventana tiene un padre, el botón de ventana de abajo TrayNotifyWnd

A continuación, obtener el controlador utilizando el método siguiente:

    dialog1=win32gui.FindWindow('Shell_TrayWnd',None)
    dialog2=win32gui.FindWindowEx(dialog1,0,'TrayNotifyWnd',None)

Si hay más de la misma ventana, es necesario utilizar la siguiente función para obtener:

# 已知子窗口的窗体类名,窗口名,寻找第index号个同类型的兄弟窗口
def find_idxSubHandle(pHandle, winClass, index):
    #    assert type(index)==int and index>=0       #assert断言,错误时报错
    handle = win32gui.FindWindowEx(pHandle, 0, winClass, None)
    while index >= 0:
        handle = win32gui.FindWindowEx(pHandle, handle, winClass, None)
        index -= 1
    #print('%x' % handle)
    return handle

¿Qué identificador de ventana padre pHandle, winClass para el nombre de la clase, número de índice de la necesidad de encontrar una ventana, la ventana puede no ser permitido números, se puede imprimir print ( '% x' % mango) asa para ver si se necesita el mango, si no la modificación índice.

 

Para aquellos que no pueden utilizar espía cuadro de texto ++ para identificar el mango, el uso actual método que es llamar a la API de Windows cuadro de texto disparos fueron OCR (reconocimiento de caracteres de imagen) pytesseract uso.

import win32gui,win32con,win32api,win32ui
def window_capture(filename): #窗口截图
  dialog = win32gui.FindWindow('VanDyke Software - SecureCRT', None)  # 对话框
  child_dialog = win32gui.FindWindowEx(dialog, 0, 'AfxFrameOrView80u', None)



  #left, top, right, bottom = win32gui.GetWindowRect(child_dialog ) #获取按钮句柄的坐标
  #print(left, top, right, bottom)

  hwnd = child_dialog # 窗口的编号,0号表示当前活跃窗口
  # 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
  hwndDC = win32gui.GetWindowDC(hwnd)
  # 根据窗口的DC获取mfcDC
  mfcDC = win32ui.CreateDCFromHandle(hwndDC)
  # mfcDC创建可兼容的DC
  saveDC = mfcDC.CreateCompatibleDC()
  # 创建bigmap准备保存图片
  saveBitMap = win32ui.CreateBitmap()
  # 获取监控器信息
  MoniterDev = win32api.EnumDisplayMonitors(None, None)
  w = MoniterDev[0][2][2]
  h = MoniterDev[0][2][3]
  # print w,h   #图片大小
  # 为bitmap开辟空间
  saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
  # 高度saveDC,将截图保存到saveBitmap中
  saveDC.SelectObject(saveBitMap)
  # 截取从左上角(0,0)长宽为(w,h)的图片
  saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)
  saveBitMap.SaveBitmapFile(saveDC, filename)

La función anterior se utiliza para controlar la interceptación de la imagen y guardar la imagen.

import pytesseract
text = pytesseract.image_to_string(Image.open(r'.\picture.jpg'))

Función se utiliza para identificar la imagen de arriba el texto. Antes de tener que utilizar pytesseract

Descargar Tesseract: https: //digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v4.0.0-beta.1.20180414.exe, e instalar directorios a una variable de entorno, y luego instalar pip pytesseract instalación.

Publicado 24 artículos originales · elogios ganado 30 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/yufen9987/article/details/87880049
Recomendado
Clasificación