使用分層的 Selenium 框架進行復雜 Web 應用的自動測試(3)

發表于:2014-08-07來源:IBM作者:王晨點擊數: 標簽:selenium
} public void clickSearchBtn() { utils.waitForElement((String) elemMap.get(TestGoogleConstants.GOOGLE_SEARCH_BTN), 30); selenium.click((String) elemMap.get(TestGoogleConstants.GOOGLE_SEARCH_BTN)); } p

  }

  public void clickSearchBtn() {

  utils.waitForElement((String)

  elemMap.get(TestGoogleConstants.GOOGLE_SEARCH_BTN), 30);

  selenium.click((String) elemMap.get(TestGoogleConstants.GOOGLE_SEARCH_BTN));

  }

  public void verifyResult(HashMap paraMap){

  stc.verifyTrue(selenium.isTextPresent((String)

  paraMap.get(TestGoogleConstants.VERIFY_STRING)));

  }

  clickSearchBtn 方法無需參數輸入,因為其任務只是點擊搜索按鈕,在 test cases 需要時調用即可。這里只是以一個簡單的例子說明如何分解任務,對于實際的 test case,這個過程會復雜許多,但其后的復用與靈活調用完全值得這些工作的付出。

  Test Cases 實現與 Test Tasks 調用

  Test Cases 作為一系列測試步驟的集合,可以通過調用若干 Test Tasks 實現。以貫穿本文的搜索引擎為例,以此調用上一部分定義的 test taskss,重現整個測試過程。簡單代碼如下所示。

  清單 9. Test Case 代碼示例

  @Parameters( { "google_se_para_1" })

  @Test

  public void testGoogle_1(String paraFile) {

  paraMap = (HashMap) XMLParser.getInstance()

  .parserXml(paraFile);

  tgTasks.openSite();

  tgTasks.typeSearchTxtField(paraMap);

  tgTasks.clickSearchBtn();

  tgTasks.verifyResult(paraMap);

  }

  Test Cases 在分層 Selenium 測試框架下,就是按照要求調用已有的 Test Tasks。值得注意的是,在上面兩個代碼列表里的 paraMap 參數。這個哈希表由我們實現的解析器解析參數定義文件而得到。TestNG 的 Parameters 參數機制,使得 Test Cases 能夠靈活地指定參數文件,從而驅動不同的 Test Cases。

  清單 10. 參數定義文件示例

  developerworks

  developerWorks 中國

  建立輸入參數解析器(parser)及參數文件

  Test Cases 與 Test Tasks 的順暢工作,需要輸入參數文件及對應的參數解析器的配合。我們以上面代碼清單的例子說明參數文件的格式。 標簽在最外層,其內的子元素為具體的參數值,如 標簽表示一個頁面元素與其對應的輸入。 元素的 id 屬性與清單 6 中的 . properties 文件定義的 locators 對應,而其子元素 則表示該 locator 的輸入值。解析器的具體實現可以參見所附的示例源代碼。

  回頁首

  導出可執行 Jar 包以部署到各類測試服務器

  為了能夠把 Selenium 測試腳本導出成一個可執行 Jar 包,我們可以把 testng.xml 中定義的相關內容,在 Java 代碼中實現,如下所示。

  清單 11. testng.xml 的 Java 表示

  //suite tag

  XmlSuite suite = new XmlSuite();

  //set suite name

  suite.setName("Test Search Engine");

  //set parameter tag

  HashMap para = new HashMap();

  para.put("google_se_para_1", "/src/resources/google_se_para_1.xml");

  suite.setParameters(para);

  //test tag

  XmlTest testGoogle = new XmlTest(suite);

  testGoogle.setName("LDAP configuration template");

  List classes = new ArrayList();

  classes.add(new XmlClass(TestGoogleTestCase.class));

  testGoogle.setXmlClasses(classes);

  這份代碼列表的功能與前文的 testng.xml 完全相同,把這些代碼添加到新定義的類 SearchEngineSuite 的 main 函數中,在這個類的方法中啟動并關閉 Selenium 服務器,并把相關文件打成一個可執行 Jar,就可以通過命令行的 java – jar 命令,執行 Selenium 測試。當然,因為具有通用性,也可以部署到各類測試服務器,執行測試。

  這里推薦使用 Eclipse 的插件 Fat Jar 導出 runnalbe Jar。首先,填入輸出 Jar 的命名,并把 SearchEngineSuite 設置為 Main-Class。然后,勾選”merge individual-sections of all MANIFEST.MF files”,后一項視需求勾選。

  圖 2. Fat Jar 導出步驟 1

圖 2. Fat Jar 導出步驟 1

  進入下一步,選擇要導出的文件,包含源代碼以及用到的 Jar 文件,點擊完成即可。

  圖 3. Fat Jar 導出步驟 2

圖 3. Fat Jar 導出步驟 2

原文轉自:http://www.ibm.com/developerworks/cn/java/j-lo-selenium/index.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97