資源推薦:
創(chuàng)新互聯(lián)專業(yè)提供珉田數(shù)據(jù)中心服務,為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買珉田數(shù)據(jù)中心服務,并享受7*24小時金牌售后服務。社區(qū)資源:自動化測試交流群
Selenium UI-Element是關于selenium ide中可以將webpage中的元素抽象到對象中的特性,將頁面元素抽象到對象中,以方便多個腳本重復利用,并支持在selenese腳本中使用ui locator 方式定位頁面元素,它給ui定位器提供了可讀性較好的元素定位標識符。
Page 指一個完整的頁面,或一個完整的DOM對象。
Page element 指頁面中任何可交互的頁面元素,可以是DOM的node,或者它所包含的文本內容。
Pageset 公共頁面元素集合
UI element UI element屬于PageSet,用于定位頁面元素。
UI argument 通過參數(shù)重復使用UI element(參數(shù)化),UI element通過參數(shù)動態(tài)生成不同的元素定位方式。
UI map pageset的集合,通過 UIMap建立pageset, ui element之間的關系
UI specifier string 一個json代碼片段,用于說明解釋pageset,element.
clickAndWait ui=allPages::section(section=topics) clickAndWait ui=topicListingPages::topic(topic=Process)
clickAndWait的locator參數(shù)指定為ui定位器
ui=allPages::section(section=topics),采用這種面向對象的方式將頁面元素封裝到不同的pageset中可以提高很大的重復利用率,而且增加腳本的可讀性。
UI-Element目前已經(jīng)集成在selenium core中,我們使用UI-Element特性時,只需要使用UIMap類去定義map文件。
Map定義文件語法:
var map = new UIMap(); map.addPageset({ name: 'aPageset' , description: 'contains elements common to all pages' , pathRegexp: '.*' , ... }); map.addElement ('aPageset', {...}); map.addElement('aPageset', { ... }); ... map.addPageset({ name: 'anotherPageset' , ... }); ...
§ 首先定義一個UIMap實例,用于構建pageset與ui element之間的關系;
§ 定義一個或多個pageset,使用json形式對pageset進行說明解釋,并使用UIMap#addPageset方法添加到UIMap實例中。
§ 每個pageset可以定義定義一個或多個element,并通過UIMap#addElement方法將定義的多個element一一綁定到相應的pageset中。
通過UIMap#addPageset(pagesetShothand)方法可以向UIMap中添加pageset,pagesetShorthand是一個json形式描述pageset的對象,代碼示例:
map.addPageset({ name: 'allPages' , description: 'contains elements common to all pages' , pathRegexp: '.*' }); |
Name,pageset的名字,必填,在UIMap中需要保證該命名的唯一性。
Description,pageset的描述,必填,用于描述該pageset包含哪些頁面元素。
pathPrefix,
pageset所包含的web page路徑前綴,比如:pathPreffix: “gallery/”,表明該pageset包含gallery/路徑下所有子頁面資源。
Paths & pathRegexp
Paths 與pathRegexp二者選其一,Paths使用數(shù)組方式匹配pageset所包含的頁面路徑,比如paths: [ 'gotoHome.do' , 'gotoAbout.do' , 'gotoFaq.do']。
PathRegexp使用正則表達式方式匹配pageset所包含的頁面資源路徑,比如:pathRegexp: 'goto(Home|About|Faq)\\.do'
paramRegexps,定義通過url參數(shù)去匹配該pageset所覆蓋的頁面資源,比如:paramRegexps: { dept: '^[abcd]$', team: 'marketing' }.
pageContent, 通過判斷頁面內容來匹配合適的pageset,比如:
pageContent: function(doc) { var id = 'address-tab'; return doc.getElementById(id) != null; }
PageContent中可以使用document對象獲取頁面內容,包括dom節(jié)點和文本內容等,通過對這些內容的判斷以確定是否符合當前pageset.
UIMap#addElement(pagesetName, uiElementShorthand), pagesetName是UI Element所要關聯(lián)的pageset名字,uiElementShorthand是一個json對象,用于描述UI Element, 如下是一個簡短的代碼示例:
map.addElement('allPages', { name: 'about_link' , description: 'link to the about page' , locator: "http://a[contains(@href, 'about.php')]" }); |
如下列出了UI Element所有包含的屬性信息:
Name, (String) UI Element的名字,命名注意結合屬性意義來定義,達到見名知意的效果。
Description,(String) 對當前UI Element的描述,同時也作為文檔顯示。
Args, (Array) 一組參數(shù),用于修改getLocator()方法實現(xiàn),默認為空列表。
Locator & getLocator(args),(Stirng | Function) locator和getLocator選擇其一,用于生成定位頁面元素的表達式。
genericLocator & getGenericLocator(),(String | Function) 通用元素定位器,通過指定通用元素定位器可以很大程度上提高定位元素的效率,指定通用定位器后,匹配元素引擎會優(yōu)先使用該定位器,當與該定位器匹配成功時,才會調用locator或getLocator定位器進一步定位。
testcase*,(Object) 定義一個用于測試getLocator的測試案例,命名須以testcase作為開頭。
Name, (String) 定義參數(shù)名字,參數(shù)名字用于向getLocator中傳入?yún)?shù)值。
Description,(String) 關于參數(shù)的描述。
DefaultValues & getDefaultValues(inDocument), (Array | Function) 用于指定參數(shù)默認值,getDefaultValues須返回Array類型數(shù)據(jù)。
Newtours 網(wǎng)站地址:http://newtours.demoaut.com/
var myMap = new UIMap(); myMap.addPageset({ name: 'allPages' , description: 'all newtours.com pages' , pathRegexp: '.*' }); myMap.addElement('allPages', { name: 'registerEntry', description: 'top level text link to register page.', locator: "xpath=//a[@href='mercuryregister.php']", testcase1: { xhtml: ' register'} }); myMap.addPageset({ name: 'loginPages' , description: 'all login pages' , paths: ['mercuryregister.php'] }); myMap.addElement('loginPages', { name: 'email', description: 'email is used for the user login account.', args: [ {name: 'email',description: 'used for generate one sys account.', defaultValues: ['email', 'bbb', 'ccc'] } ], getLocator: function(args) { return 'name=' + args.email; }, testcase1: { args: {email: 'qqq'} , xhtml: ' '} }); |
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。