美文网首页Python思科DevNetPython
Python PyAutoGUI完成界面自动化测试

Python PyAutoGUI完成界面自动化测试

作者: 刘小白DOER | 来源:发表于2021-10-17 23:26 被阅读0次

    在以前笔者文章-程序告警时完成界面截图 中,又介绍python的PyAutoGUI模块来完成鼠标click操作。PyAutoGUI不仅仅有操作鼠标点击的函数,还有操作键盘按键的函数。笔者在想在软件测试的时候,可以结合PyAutoGUI来完成一些长时间的重复性测试工作。

    先来看看下面的代码,在获取到光标处延时一秒钟不断的发送cmd_string ,然后enter 。

import pyautogui as pg

import time

time.sleep(5)

cmd_string="cmd"

for _ in range(6):

    pg.typewrite(cmd_string,0.25)

    pg.press("enter")

    time.sleep(1)

    那么如果输入的字符串每次都不一样,需要完成一套命令的测试呢?那么就可以结合文本文件来完成。从test.t xt钟读取指令然后依次发送来完成这样的重复性工作 。如果需要再重复文件的话,就在for line in lines:写个循环,比如for _ in range(6): 或者直接死循环while True:  。重要的是循环的延时都需要加上,防止操作过快 ,pyautogui.PAUSE可以统一为所有的PyAutoGUI函数增加延迟 。

import pyautogui as pg

import time

time.sleep(5)

with open("test.txt","r") as f:

    lines = f.readlines()

for line in lines:

    pg.typewrite(line,0.25)

    pg.press("enter")

    time.sleep(1)

    以前笔者是使用PIL库的ImageGrab类grab方法来实现截图保存,pyautogui.screenshot()方法也可以完成截图,save方法保存,在测试过程中可以根据需要来保存当时的信息 。

    相对于screenshot方法,locateOnScreen可以拥有定位功能。在测试的时候需要点击按钮,如果直接定位到坐标的话,会因为窗口移动而点击错误,定位方法可以识别图片并可以无障碍的点击按钮,无需关心窗口的位置。官网上Screenshot Functions — PyAutoGUI documentation有关于的locate的使用方法,有五个函数,我们需要根据坐标来点击按钮,那么locateCenterOnScreen适合我们的需求。

    不过笔者找到一个更加有意思的项目,python-study/python-samples/pyautogui-sample at master · techstay/python-study (github.com) ,可以识别windows计算器中的数字和按钮来完成乘法法操作 。代码如下,函数find_and_click完成png图片识别并点击找到的图片位置,confidence参数需要安装了OpenCV才可以使用,允许模糊匹配图片。

      typewrite可以输入文字,locate可以定位按钮,自动化测试无外乎这两种模拟人的操作 。但是还有一点,定位按钮点击后怎么返回到输入框来typewrite呢?读者觉得应该怎么来操作呢?

    笔者在想locate定位到输入框的中心点,然后点击就可以定位到输入框来typewrite 。但是,如果软件界面有多个输入框呢,locate定位会准吗?输入框形状差异化?输入框颜色差异化?

    你觉得呢?

    

    

相关文章

网友评论

    本文标题:Python PyAutoGUI完成界面自动化测试

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