您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 >
使用XML維護Selenium自動化測試腳本
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/6/7 10:46:27 ] 推薦標簽:

  清單 5. 使用 DOM4J 解析 XML 腳本文件

Document document = null;
 try {
 System.out.println("測試用例 XML 文件位置 ::" + ucXMLFile);
 document = new SAXReader().read(new File(ucXMLFile));
 } catch (DocumentException e) {
   e.printStackTrace();
   }
 Element suiteElm = document.getRootElement();
 // settings element
 Element settings = suiteElm.element("SETTINGS");
 if (settings != null) {
    browser = settings.attributeValue("browser");
    seleniumServer = settings.attributeValue("seleniumServer");
    seleniumPort = settings.attributeValue("seleniumPort");
    application_url = settings.attributeValue("application_url");
    }

  2、讀取 STEP 測試步驟信息

  獲取用例級別的延時設(shè)置,在每一個測試步驟執(zhí)行之前,暫停 timeout 指定的秒數(shù)。通過指定延時,可以讓程序執(zhí)行的慢一些,符合用戶真實操作,也方便演示。獲取的測試步驟信息保存在列表實例 List<Element> stepNodes。

  清單 6. 獲取測試步驟信息

// TEST element
Element testElm = suiteElm.element("TEST");
System.out.println("測試用例名稱為 ::" + testElm.attributeValue("name"));
if (testElm.attributeValue("timeout") != null) {
// 用例級別的 timeout 設(shè)置 , 覆蓋了默認設(shè)置!
timeout = new Integer(testElm.attributeValue("timeout")).intValue();
System.out.println("延時設(shè)置,timeout=" + testElm.attributeValue("timeout")+"秒");
}
stepNodes = testElm.element("STEPS").elements();
}

  3、創(chuàng)建 Selenium 實例,啟動瀏覽器,大化瀏覽器窗口,打開要訪問的網(wǎng)站

  清單 7. 創(chuàng)建初始化 Selenium 實例

selenium = new DefaultSelenium(seleniumServer,
new Integer(seleniumPort).intValue(), browser, application_url);
System.out.println("正在啟動 Selenium。。。");
selenium.start();
selenium.windowMaximize();
selenium.open(application_url);

  4、迭代解析 STEP 元素執(zhí)行各個測試步驟

  創(chuàng)建一個迭代器實例 iterator,使用 while 循環(huán),依次執(zhí)行各個測試步驟。在執(zhí)行的時候,打印詳細的步驟信息,方便調(diào)試。根據(jù) type 屬性指定的步驟類型,分別調(diào)用不同的 Selenium 接口。作為演示,本文提供的代碼例子,僅僅包括鼠標單擊、輸入框輸入和截圖功能。通過豐富處理 SETP 步驟元素的代碼,可以支持更多的功能。

  清單 8. 迭代依次解析測試步驟

Element elm = null;
// 循環(huán)解析測試步驟
Iterator<Element> iterator = null;
iterator = stepNodes.iterator();
while (iterator != null && iterator.hasNext()) {// while 循環(huán)開始
elm = iterator.next();
System.out.println("------------------------------>");
System.out.println("step index=" + elm.attributeValue("index"));
System.out.println("step name=" + elm.attributeValue("name"));
System.out.println("step type=" + elm.attributeValue("type"));
String type = elm.attributeValue("type");
if (type == null) {
SeleneseTestBase.fail("必須定義 type 屬性,請檢查 XML 測試用例。");
}
if (type.equals("Type.CLICK")) {
// 處理 Click 單擊操作
pause(timeout*1000);
try {
String xpValue = elm.element("XPATH").getText();
selenium.click(xpValue);

} catch (Exception e) {
SeleneseTestBase.fail(e.getMessage()+ " 步驟執(zhí)行失敗,測試執(zhí)行被中止 ,
測試元素為 : " + elm.asXML());
}
} else if (type.equals("Type.INPUT")) {
// 處理 Input 在輸入框執(zhí)行輸入操作
pause(timeout*1000);
try {
String inValue = elm.element("VALUE").getText();selenium.type(
elm.element("XPATH").getText(), inValue);
} catch (Exception e) {
SeleneseTestBase.fail(e.getMessage()
+ " 步驟執(zhí)行失敗,測試執(zhí)行被中止 , 測試元素為 : " + elm.asXML());
}
}
else if(type.equals("Type.CaptureScreenshot")){
pause(timeout*1000);
String fileName = elm.element("VALUE").getText();
captureScreenshot(fileName);
}
}// 循環(huán)解析測試步驟;while 循環(huán)結(jié)束

  完整的框架項目代碼請參考附件進行下載。對這個單元測試類的運行和前文描述的是一致的,不再贅述。當(dāng)然,現(xiàn)在的框架支持的功能是非常簡單的 (僅僅支持單擊、表單輸入和截圖功能),框架開發(fā)人員可以添加更多的功能特性,然后可以把該自動化測試框架交付給業(yè)務(wù)測試人員,他們再不會為編寫測試代碼發(fā)愁了。

  Selenium 框架的更多特性開發(fā)

  通過上面的演示,我們了解了如何開發(fā)一套不需要掌握編碼知識能編寫自動化測試用例的測試框架。因為篇幅的原因,本框架支持的特性比較少,框架的功能非常簡單,只支持鼠標單擊操作、數(shù)據(jù)輸入操作和截圖功能,遠遠不能滿足自動化測試的需求。本文的主要目的在于讓讀者理解這種自動化框架的理念。讀者可以根據(jù)自己項目組的實際情況進行自定義開發(fā)更多的功能特性。

  結(jié)束語

  通過上面的介紹,我們了解到了如何向傳統(tǒng)的功能測試用例里面添加額外的控件信息,從而形成能被自動化測試工具識別的自動化測試用例;以及如何使用 XLST 轉(zhuǎn)換 XML 格式的測試用例文件成 HTML 格式,增加了用例的可讀性;并通過詳細的例子探討了如何定制屬于自己的基于 Selenium 二次開發(fā)的自動化測試框架。后再次總結(jié)一下該框架的讓人心動之處,整理一下思路 , 規(guī)劃屬于您自己的自動化測試框架吧。

  ● 業(yè)務(wù)測試人員不需要編程知識,熟悉業(yè)務(wù)和瀏覽器,即可開發(fā)自動化測試腳本業(yè)務(wù)測試

  ● 人員不需要編程知識,熟悉業(yè)務(wù)和瀏覽器,即可開發(fā)自動化測試腳本

  ● 自動化測試用例和傳統(tǒng)的功能測試用例看起來很像,閱讀方便,利于評審

  ● 擴展性比較強大,可以開發(fā)出更多的功能特性。XML 測試用例腳本通用性強,可以適用不同的測試工具

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd