天天看點

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自動化執行個體