UI映射
一個(gè)UI映射是一種機(jī)制,它存儲(chǔ)所有的定位器的測(cè)試套件在一個(gè)地方,方便修改UI元素的路徑標(biāo)識(shí)符或改變?cè)贏UT。測(cè)試腳本,然后使用UI地圖定位以被測(cè)試的元件;旧,UI地圖是一個(gè)存儲(chǔ)庫(kù)的測(cè)試腳本對(duì)象,對(duì)應(yīng)于被測(cè)試的應(yīng)用程序的UI元素。
是什么讓一個(gè)UI地圖有幫助嗎?其主要目的是測(cè)試腳本的管理更加容易。當(dāng)定位需要編輯,有一個(gè)中央位置輕松地找到對(duì)象,而不是通過(guò)搜索測(cè)試腳本代碼。此外,它允許改變的標(biāo)識(shí)符在一個(gè)地方,而不是在多個(gè)地方,以使更改在測(cè)試腳本,或?yàn)榇耸,在多個(gè)測(cè)試腳本。
總之,一個(gè)UI地圖有兩個(gè)顯著的優(yōu)點(diǎn)。
● UI對(duì)象使用一個(gè)集中的位置,而不是讓他們分散在整個(gè)腳本。這使得腳本維護(hù)更高效。
● 神秘的HTML標(biāo)識(shí)符和名稱可以被賦予了更多的人類可讀的名字,提高測(cè)試腳本的可讀性。
考慮下面很難理解的測(cè)試代碼(Java語(yǔ)言)。
public void testNew() throws Exception {
selenium.open(http://www.test.com);
selenium.type("loginForm:tbUsername", "xxxxxxxx");
selenium.click("loginForm:btnLogin");
selenium.click("adminHomeForm:_activitynew");
selenium.waitForPageToLoad("30000");
selenium.click("addEditEventForm:_IDcancel");
selenium.waitForPageToLoad("30000");
selenium.click("adminHomeForm:_activityold");
selenium.waitForPageToLoad("30000");
}
該代碼很難被那些不熟悉待測(cè)應(yīng)用(AUT)頁(yè)面源代碼的人理解。即使是待測(cè)應(yīng)用的固定用戶可能也很難理解這段腳本代碼的作用。一個(gè)更好的腳本可能是:
public void testNew() throws Exception {
selenium.open(http://www.test.com);
selenium.type(admin.username, "xxxxxxxx");
selenium.click(admin.loginbutton);
selenium.click(admin.events.createnewevent);
selenium.waitForPageToLoad("30000");
selenium.click(admin.events.cancel);
selenium.waitForPageToLoad("30000");
selenium.click(admin.events.viewoldevents);
selenium.waitForPageToLoad("30000");
}
使用備注和空格換行、再加上UI映射標(biāo)識(shí),下面的代碼更加易讀:
public void testNew() throws Exception {
// Open app url.
selenium.open(http://www.test.com);
// Provide admin username.
selenium.type(admin.username, "xxxxxxxx");
// Click on Login button.
selenium.click(admin.loginbutton);
// Click on Create New Event button.
selenium.click(admin.events.createnewevent);
selenium.waitForPageToLoad("30000");
// Click on Cancel button.
selenium.click(admin.events.cancel);
selenium.waitForPageToLoad("30000");
// Click on View Old Events button.
selenium.click(admin.events.viewoldevents);
selenium.waitForPageToLoad("30000");
}
有多種方法可以實(shí)現(xiàn)UI映射。可以創(chuàng)建一個(gè)類或結(jié)構(gòu)體來(lái)存儲(chǔ)字符串變量,每個(gè)變量存儲(chǔ)一個(gè)定位信息;蛘撸褂靡粋(gè)文本文件來(lái)存儲(chǔ)鍵值對(duì)。在Java中,一個(gè)包含鍵值對(duì)的屬性property文件可能是好的方法。