天天看点

Sikuli+TestNG UI自动化实例

背景:因Studio中存在较多类型机器人+相机等组合,为覆盖全部测试用例,特编写UI自动化,节省人工,提升效率

Sikuli+TestNG UI自动化实例

)

  • Pictures_PNG 因定位元素方式为图片定位,所以新建该文件夹,主要存放定位元素时所用到的图片,便于管理
  • ReadExcel 记录测试用例运行所需配置参数,在运行时,根据Excel中的配置情况决定自动化运行的流程用例及次数
  • src 主要存放测试脚本,C_Case中为运行用例类,C_Main中为方法类
  • test-output 测试运行完成后,自动生成测试报告在该文件夹下
  • TestNG.xml 配置测试用例
  1. 使用sikuli通过图片定位方式,sikuli是什么

    Sikuli 是由 MIT 的研究团队发布的新型图形化编程技术。它以图像检索技术为基础,提供了一套基于 Jython 的脚本语言以及集成开发环境。使用者可利用屏幕截图直接引用 GUI 元素进行编程,完成交互操作。

String path = "/home/wangw/IdeaProjects/CobotSys/Pictures_PNG/";

//打开程序
public void start() throws FindFailed {
    if (path != null) {
        scr.wait(path + "cion.png", 5);
        scr.click(path + "cion.png");
    }
    else System.out.print("图片路径未找到");

}
           

注:通过图片路径找到截图,根据截图在程序中找到对应功能位置,根据脚本给出的click或其他命令,进行操作

2.使用TestNG测试框架,TestNG是什么

TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器)。

使用注记: @BeforeTest、@Test、@AfterTest、@DataProvider

Sikuli+TestNG UI自动化实例

思路:BeforeTest及AfterTest来进行初始化及收尾工作,使用Test及DataProvider通过读取Excel来实现用例执行

dataProvider的实现

新建读取Excel类:Add_Config

public class Add_Config{
    //通过配置,添加机器人Excel
    public String filePath;
    public List list = new ArrayList();
    public  Add_Config(String filePath) {
        this.filePath = filePath;
    }

    public List readExcel() throws IOException, BiffException {
        //创建输入流
        InputStream stream = new FileInputStream(filePath);
        //获取Excel文件对象
        Workbook  rwb = Workbook.getWorkbook(stream);
        //获取文件的指定工作表 默认的第一个
        Sheet sheet = rwb.getSheet(0);
        //行数(表头的目录不需要,从1开始)
        for(int i=1; i<sheet.getRows(); i++){
            //创建一个数组 用来存储每一列的值
            String[] str = new String[sheet.getColumns()];
            Cell cell = null;
            //列数
            for(int j=0; j<sheet.getColumns(); j++){
                //获取第i行,第j列的值
                cell = sheet.getCell(j,i);
                str[j] = cell.getContents();
            }
            //把刚获取的列存入list
            list.add(str);
        }
        return list;
    }

}
           

新建用例执行类:CobotSys_SFlow.java

//    使用DataProvider读取Excel中数据为DataProvider自身所需数据格式,
    @DataProvider(name = "datatest")
    public Object[][] PCData() throws IOException, BiffException {
        ExcelC = A.readExcel();
//     Object[][],第一个[]为Excel列数,也就是case运行的次数,第二个[]中为所存运行列中的数据
        Object[][] DATA = new Object[ExcelC.size()][];
        for (int i = 0; i<ExcelC.size(); i++) {
            DATA[i] = (Object[]) ExcelC.get(i);
        }
        return DATA;
    }
           

大体流程:获取Excel数据——>转换为Object[][]类型数据——>Test注记执行具体用例

3、生成测试报告

下载所需lib包——>导入项目——>修改TestNG.xml文件

下载velocity与reporting两个lib包

导入项目

修改TestNG.xml文件,增加下面脚本

<listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
    </listeners>
           

4、运行xml文件,执行测试用例

<?xml version="1.0" encoding="UTF-8"?>
<suite name="TestNG Suite">
    <test name="CobotStudio_Report" preserve-order="true">
        <classes>
            <class name="CobotSys_SFlow">
                <methods>
                    <include name="Begining_frame" />
                </methods>
            </class>
            <class name="CobotSys_Case">
                <methods>
                    <include name="Begining_frame" />
                    <include name="Begining_camer" />
                </methods>
            </class>
        </classes>
    </test>
    <listeners>
        <listener class-name="org.uncommons.reportng.HTMLReporter" />
        <listener class-name="org.uncommons.reportng.JUnitXMLReporter" />
    </listeners>
</suite>
           

5、查看测试报告

路径:CobotSys/test-output/html/index.html

Sikuli+TestNG UI自动化实例