UI映射
一個UI映射是一種機制,它存儲所有的定位器的測試套件在一個地方,方便修改UI元素的路徑標識符或改變在AUT。測試腳本,然后使用UI地圖定位以被測試的元件。基本上,UI地圖是一個存儲庫的測試腳本對象,對應(yīng)于被測試的應(yīng)用程序的UI元素。
是什么讓一個UI地圖有幫助嗎?其主要目的是測試腳本的管理更加容易。當定位需要編輯,有一個中央位置輕松地找到對象,而不是通過搜索測試腳本代碼。此外,它允許改變的標識符在一個地方,而不是在多個地方,以使更改在測試腳本,或為此事,在多個測試腳本。
總之,一個UI地圖有兩個顯著的優(yōu)點。
● UI對象使用一個集中的位置,而不是讓他們分散在整個腳本。這使得腳本維護更高效。
● 神秘的HTML標識符和名稱可以被賦予了更多的人類可讀的名字,提高測試腳本的可讀性。
考慮下面很難理解的測試代碼(Java語言)。
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");
}
該代碼很難被那些不熟悉待測應(yīng)用(AUT)頁面源代碼的人理解。即使是待測應(yīng)用的固定用戶可能也很難理解這段腳本代碼的作用。一個更好的腳本可能是:
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映射標識,下面的代碼更加易讀:
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");
}
有多種方法可以實現(xiàn)UI映射。可以創(chuàng)建一個類或結(jié)構(gòu)體來存儲字符串變量,每個變量存儲一個定位信息;蛘撸褂靡粋文本文件來存儲鍵值對。在Java中,一個包含鍵值對的屬性property文件可能是好的方法。