最近在做PC端应用程序自动化测试,由于程序是C++和VB结合的,使用工具无法像做APP自动化那样实现元素定位,且有些页面无法获取元素,故无意中发现了Python一个神奇的库:pyautogui。使用pyautogui可实现对页面图片坐标定位,这样就解决了当一个页面存在多个元素且无法或者元素坐标的问题。
一、环境准备
1、安装并导入pyautogui库
pip install pyautogui
import pyautogui as auto
2、准备需要识别的图片
二、解决思路
通过已存在的图片,在程序当中找到该图片的坐标,为后续提供坐标点操作
三、实现步骤
1、这里应用程序图就不贴出来了(你懂得),图片在项目中的路径
2、实现代码
from conf.config import *
import pyautogui as auto
from time import sleep
from pymouse import PyMouse
from pykeyboard import PyKeyboard
# 识别图片并转换为x,y坐标,定位到name
def im_dis():
try:
number1_location = auto.locateOnScreen('F:/HIS/Script/wm/img/2.png') # 传入按钮的图片
print(number1_location) # 返回屏幕所在位置
x, y = auto.center(number1_location) # 转化为 x,y坐标
print(x, y)
return x, y
except TypeError:
print("A TypeError has been occured!")
# 分别住院床位
def im_cw():
number1_location = auto.locateOnScreen('F:/HIS/Script/wm/img/1.png') # 传入按钮的图片
print(number1_location) # 返回屏幕所在位置
x, y = auto.center(number1_location) # 转化为 x,y坐标
return x,y
if __name__ == "__main__":
driver = win_start()
sleep(5)
m = PyMouse()
k = PyKeyboard()
m.click(435, 427) # 坐标定位到 门诊管理系统
sleep(2)
# x, y 是坐标位置 button 1 表示左键,2 表示点击右键 n点击次数,默认是1次, 2表示双击
m.click(265, 568, 1, 2) # 定位到 门诊收费
sleep(8)
m.click(48, 25) # 定位患者管理
sleep(1)
m.click(83, 76) # 定位病区一览表
sleep(10)
m.click(646, 622)
x, y = im_cw()
print(x, y)
sleep(3)
3、输出结果
这样就实现了图片的坐标问题,为后续开展自动化测试工作提供了有力支撑。