您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
菜鳥學自動化測試??selenium系列全集
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2013/4/3 14:43:08 ] 推薦標簽:

菜鳥學自動化測試(五)-----selenium命令之定位頁面元素

定位頁面元素

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

假如,有如下一段HTML代碼:
復制代碼

 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>

復制代碼

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

 

1. identifier定位

   這是普遍的一種定位方式,當不能識別為其它定位方式后,默認為dientifier定位,在這種策略下,第一個使用id的頁面元素將被識別出來,如果沒有使用指定id的元素,那么將識別第一個名字與指定條件相符的元素。

identifier識別html各項元素的定位策略如下:

identifier=loginForm    //定位頁面元素為from

identifier=username   //定位頁面元素為username

identifier=Continue   //定位頁面元素為Continue

因為identifier定位是默認方式,因此“identifier=” 可以不寫。

Continue   //同樣表示定位頁面元素為Continue

 

2. id定位

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

id=loginFrom   //定位頁面元素from

 

3. name定位

名稱定位方式將會識別第一個匹配名稱屬性的UI元素。如果多個元素擁有相同的名稱屬性,可以使用過濾器來進一步優(yōu)化你的定位策略。默認的過濾器是Value (匹配value特征):

name=username   //定位頁面元素為username

name=Continue  value=Clear  //定位頁面元素為Continue ,值為Clear

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

 

提示:

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

 

4. XPath定位

XPath是一種在XML文檔中定位元素的語言。因為HTML可以看做XML的一種實現(xiàn),所以selenium用戶可是使用這種強大語言在web應用中定位元素。

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

xpath=/html/body/form[1]           //路徑(html的任何輕微改變都會導致失。

//form[1]          //HTML中的第三個form元素

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

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

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

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

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

擴展閱讀:

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插件,可以幫助你獲取頁面元素的XPath:

XPath Checker         Firebug

 

5. 通過超鏈接定位

可以通過連接文字來定位超鏈,如果兩個鏈接文字相同,那么第一個匹配的將被識別出來。

link=continue     //定位頁面元素連接文字為continue

 

6. DOM定位

Document Object Model 被用于描述HTML文檔,可以使用javaScript來訪問。

這一定位策略通過javaScript評估頁面上的元素,可以使用分級符號來簡化元素定位。

      因為DOM定位以“document”開始,所以“dom=”標簽并不是必須的。

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

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

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

document.forms[0] .usernam      //定位頁面元素username

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

 

7。 CSS定位

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

css=form#loginForm    //定位頁面元素form

css=input[name="username"]       //定位頁面元素username

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

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

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

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

擴展閱讀:

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

提示:很多有經(jīng)驗的selenium用戶推薦CSS定位方式,因為它比XPath更快。而且可以在HTML文件中找到更復雜的對象。

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

菜鳥提示:

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

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

       那么,轉換到我們的自動化測試代碼是什么樣子呢?

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

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

selenium.click("id=loginForm");

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

......

 

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