Uibot实现飞布自动化测试

140 阅读5分钟

1、简介

UiBot是一种基于图像识别和自动化技术的自动化测试和自动化流程执行工具。它是一种无需编程知识的自动化工具,可以帮助用户快速地自动化执行日常任务和测试过程。

2、测试框架

使用 UiBot 进行自动化测试的框架和工具

主要特点如下:

图像识别自动化: UiBot可以通过图像识别技术来模拟用户对计算机屏幕的操作,实现自动化任务的执行。它可以识别屏幕上的图像和元素,然后模拟鼠标和键盘操作来执行任务。

无需编程: UiBot是一个低代码或无代码自动化工具,用户无需编写复杂的代码即可创建自动化任务。它提供了用户友好的图形界面,允许用户通过拖放和配置的方式创建自动化流程。

多平台支持: UiBot支持Windows操作系统,并且可以用于自动化执行各种应用程序、网站、桌面应用和企业软件。

快速录制: UiBot提供快速录制功能,用户可以在屏幕上手动执行任务,然后UiBot会自动将这些操作记录为自动化任务。

3、测试环境

本次测试脚本运行在本地环境,操作系统为win10,使用谷歌浏览器。

  1. 录制测试用例

UIBot提供了录制功能,可以帮助我们快速生成测试脚本。在项目中创建一个测试用例,点击“录制”按钮,然后操作目标Web应用程序。UIBot会自动记录操作步骤,并生成测试脚本。

本次使用UIBott,以飞布数据源模块为例,实现对数据源的连接、数据源的创建、数据源的开启功能进行UI自动化测试校验

UIBot提供了可视化界面和脚本两种方式,方便不同技能水平的测试人员使用。数据源模块测试用例如下图所示:

image.png

 

 

5、 运行测试用例

完成测试用例的录制或编写后,我们可以点击“运行”按钮来执行测试用例。UIBot会自动打开目标Web应用程序,并执行测试用例中的操作步骤。执行完成后,我们可以查看测试结果和日志。因网络超时、系统缺陷等问题,导致用例无法进行下去时,会输出等待超时的日志,这种情况下,可以及时去排查是否存在系统缺陷,如果是因为网络可以对加长延时时间进行处理。

image.png

自动化测试过程如下图所示:

image.png

image.png

image.png

  image.png

 

image.png

 

image.png

 

 

数据源模块自动化测试源码如下:

dim hWeb = "",bRet

dim sRet = ""

dim iRet = ""

Dim msg="使用Chrome浏览器打开飞布项目,执行数据源创建、API创建、API调用等流程。\n在运行之前,请确保已经安装Chrome扩展和Office(WPS)。"

dim errMsg="检测到未安装或未启用Chrome扩展,请启用Chrome扩展之后进行重试!"

dim objUiElement = ""

 

iRet = Dialog.MsgBox(msg,"UiBot",0,1,0)

try 

    hWeb = WebBrowser.Create("chrome","",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"sBrowserPath":"","sStartArgs":""})

    iRet = WebBrowser.GoURL(hWeb,"http://localhost:9123",true,{},30000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

 

    

catch e

    iRet = Dialog.MsgBox(errMsg&"\n"&CStr(e),"UiBot",0,1,0)

    exit()

end try

 

UiElement.Wait(@ui"块级元素

_数据源2","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

 

Mouse.Action(@ui"块级元素

7","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})

 

UiElement.Wait(@ui"块级元素

_MySQL2","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

Mouse.Action(@ui"块级元素

_MySQL3","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})

UiElement.Wait(@ui"输入控件","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

Keyboard.InputText(@ui"输入控件1","mysql_auto",true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})

Keyboard.InputText(@ui"输入控件8","mysql://root:xxxx@XXXX/fb",true,20,10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 500, "bSetForeground": true, "sSimulate": "message", "bValidate": false, "bClickBeforeInput": false})

Delay(1000)

 

Keyboard.Press("Esc", "press", [],{"iDelayAfter": 300, "iDelayBefore": 200, "sSimulate": "simulate"})

Mouse.Action(@ui"按钮_测试2","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})

UiElement.Wait(@ui"文本_连接成功1","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

bRet = Text.Exists(@ui"文本_连接成功","连接成功","match",1,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true})

TracePrint(bRet)

If bRet=True 

TracePrint('测试数据源连接成功')

ElseIf bRet=False

TracePrint('测试数据源连接失败')

End If

 

Mouse.Action(@ui"按钮

_保存","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})

 

Delay(3000)

 

bRet = Text.Exists(@ui"块级元素

_mysql_auto","mysql_auto","instr",1,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true})

TracePrint(bRet)

If bRet=True 

TracePrint('mysql_auto数据源创建成功')

ElseIf bRet=False

TracePrint('mysql_auto数据源创建失败')

End If

UiElement.Wait(@ui"文本_开启关闭","show",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})

Mouse.Action(@ui"文本_开启关闭1","left","click",10000,{"bContinueOnError": false, "iDelayAfter": 300, "iDelayBefore": 200, "bSetForeground": true, "sCursorPosition": "Center", "iCursorOffsetX": 0, "iCursorOffsetY": 0, "sKeyModifiers": [],"sSimulate": "simulate", "bMoveSmoothly": false})

 

Delay(5000)

 

bRet = Text.Exists(@ui"文本_开启关闭2","开启","instr",1,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true})

TracePrint(bRet)

If bRet=True 

TracePrint('mysql_auto数据源开启成功')

ElseIf bRet=False

TracePrint('mysql_auto数据源开启失败')

End If

 

 

完整的测试报告如下图所示:

  image.png

 

 

UIBot作为一个灵活、易用的UI自动化测试框架,为测试人员提供了一个强大的工具来进行自动化测试。它能够提高测试效率,减少人工测试的工作量,同时提高测试的准确性和可靠性。通过飞布自动化测试案例能够帮助大家了解UIBot的优势和用法,并在项目中实现高效的UI自动化测试。