您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源功能測(cè)試工具 > Selenium
菜鳥(niǎo)學(xué)自動(dòng)化測(cè)試??selenium系列全集
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/3 14:43:08 ] 推薦標(biāo)簽:

菜鳥(niǎo)學(xué)自動(dòng)化測(cè)試(五)-----selenium命令之定位頁(yè)面元素

定位頁(yè)面元素

對(duì)于很多selenium命令,target域是必須的。Target在web頁(yè)面范圍內(nèi)識(shí)別UI元素,它使用locatorType=location的格式。在很多情況下,locatorType可以省略,下面舉例方式來(lái)描述各種類型的locatorType.

假如,有如下一段HTML代碼:
復(fù)制代碼

 html>

<body>

<form id= "loginForm" >

<input name= "username" type= "text" />

<input name= "password" type= "password" />

<input name= "continue" type= "submit" value= "Login" />

<input name= "continue" type= "button" value= "Clear" />

<a href= "continue.html" >Continue</a>

</form>

</body>

</html>

復(fù)制代碼

我們看看selenium提供了那些定位方式:

 

1. identifier定位

   這是普遍的一種定位方式,當(dāng)不能識(shí)別為其它定位方式后,默認(rèn)為dientifier定位,在這種策略下,第一個(gè)使用id的頁(yè)面元素將被識(shí)別出來(lái),如果沒(méi)有使用指定id的元素,那么將識(shí)別第一個(gè)名字與指定條件相符的元素。

identifier識(shí)別html各項(xiàng)元素的定位策略如下:

identifier=loginForm    //定位頁(yè)面元素為from

identifier=username   //定位頁(yè)面元素為username

identifier=Continue   //定位頁(yè)面元素為Continue

因?yàn)閕dentifier定位是默認(rèn)方式,因此“identifier=” 可以不寫(xiě)。

Continue   //同樣表示定位頁(yè)面元素為Continue

 

2. id定位

這種定位方式比identifier定位范圍更窄,當(dāng)然也更具體,如果你知道元素id特征,使用這種方式:

id=loginFrom   //定位頁(yè)面元素from

 

3. name定位

名稱定位方式將會(huì)識(shí)別第一個(gè)匹配名稱屬性的UI元素。如果多個(gè)元素?fù)碛邢嗤拿Q屬性,可以使用過(guò)濾器來(lái)進(jìn)一步優(yōu)化你的定位策略。默認(rèn)的過(guò)濾器是Value (匹配value特征):

name=username   //定位頁(yè)面元素為username

name=Continue  value=Clear  //定位頁(yè)面元素為Continue ,值為Clear

name=Continue  type=button  //定位頁(yè)面元素為Continue ,類型為button

 

提示:

上述三種定位器使得selenium可以不依賴于UI元素在頁(yè)面上的位置而進(jìn)行測(cè)試。所以,當(dāng)頁(yè)面結(jié)構(gòu)發(fā)生變化時(shí),測(cè)試依然可以通過(guò)。有時(shí)候,設(shè)計(jì)人員頻繁改動(dòng)頁(yè)面的情況,通過(guò)id和name特征定位元素變的非常重要。

 

4. XPath定位

XPath是一種在XML文檔中定位元素的語(yǔ)言。因?yàn)镠TML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語(yǔ)言在web應(yīng)用中定位元素。

XPath擴(kuò)展了上面id和name定位方式,提供了很多種可能性,比如定位頁(yè)面上的第三個(gè)多選框。

xpath=/html/body/form[1]           //路徑(html的任何輕微改變都會(huì)導(dǎo)致失敗)

//form[1]          //HTML中的第三個(gè)form元素

xpath=//form[@id='loginForm']        //id為loginFrom的元素

//input[@name='username']       //input元素且其name為‘username’

//form[@id='loginForm']/input[1]           //針對(duì)id為‘loginForm’的form,定位它的第一個(gè)input元素

//input[@name='continue'][@type='button']         //name為‘continue’且type為‘button’的input

//form[@id='loginForm']/input[4]        //id為‘loingForm’的form,定位它的第四個(gè)input元素。

擴(kuò)展閱讀:

W3C XPath Recommendation: http://www.w3.org/TR/xpath/

XPath Tutorial: http://www.zvon.org/xxl/XPathTutorial/General/examples.html

http://www.w3.org/TR/xpath/

Firefox插件,可以幫助你獲取頁(yè)面元素的XPath:

XPath Checker         Firebug

 

5. 通過(guò)超鏈接定位

可以通過(guò)連接文字來(lái)定位超鏈,如果兩個(gè)鏈接文字相同,那么第一個(gè)匹配的將被識(shí)別出來(lái)。

link=continue     //定位頁(yè)面元素連接文字為continue

 

6. DOM定位

Document Object Model 被用于描述HTML文檔,可以使用javaScript來(lái)訪問(wèn)。

這一定位策略通過(guò)javaScript評(píng)估頁(yè)面上的元素,可以使用分級(jí)符號(hào)來(lái)簡(jiǎn)化元素定位。

      因?yàn)镈OM定位以“document”開(kāi)始,所以“dom=”標(biāo)簽并不是必須的。

dom=document.getElementById('loginForm')        // 定位頁(yè)面元素form

dom=document.forms['loginForm']       // 定位頁(yè)面元素form

dom=document.forms[0]        // 定位頁(yè)面元素form

document.forms[0] .usernam      //定位頁(yè)面元素username

document.forms[0] .elements[3]      //定位頁(yè)面元素continue,它是form的第四個(gè)元素

 

7。 CSS定位

  CSS(Cascading Style Sheets)是一種語(yǔ)言,它被用來(lái)描述HTML和XML文檔的表現(xiàn)。CSS使用選擇器來(lái)為頁(yè)面元素綁定屬性。這些選擇器可以被selenium用作另外的定位策略。

css=form#loginForm    //定位頁(yè)面元素form

css=input[name="username"]       //定位頁(yè)面元素username

css=input.required[type="text"]        //定位頁(yè)面元素,其類型為text

css=input.passfield        //定位頁(yè)面元素,其類型為password

css=#loginForm input[type="button"]        //定位頁(yè)面元素,其類型為button

css=#loginForm input:nth-child(2)        //定位頁(yè)面元素passfield,且它為from的第二個(gè)input子元素

擴(kuò)展閱讀:

http://www.w3.org/TR/css3-selectors/

提示:很多有經(jīng)驗(yàn)的selenium用戶推薦CSS定位方式,因?yàn)樗萖Path更快。而且可以在HTML文件中找到更復(fù)雜的對(duì)象。

------------------------------------------------------------------------------

菜鳥(niǎo)提示:

    講了這么多頁(yè)面定位的方式,還是不明白干啥用的?

自動(dòng)化測(cè)試,我們通過(guò)工具來(lái)完成手工操作,如果我們要點(diǎn)擊一個(gè)按鈕,我們認(rèn)得那是一個(gè)按鈕,如何讓自動(dòng)化工具也認(rèn)得那是一個(gè)按鈕呢?如何讓工具認(rèn)得是“確定”按鈕,而不是“取消”按鈕呢。那每個(gè)按鈕都有不同的屬性,也許屬性完全相同但位置不同。我們要通過(guò)他們的特征描述它們,然后自動(dòng)化工具才能根據(jù)我們的描述去找到它們。

       那么,轉(zhuǎn)換到我們的自動(dòng)化測(cè)試代碼是什么樣子呢?

//下面是在java代碼的實(shí)現(xiàn)

selenium.click("元素屬性的描述");

selenium.click("id=loginForm");

selemiun.click("name=Continue  value=Clear");

......

 

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