selenium學習(三)-定位頁面元素(Target)


對於很多selenium命令,target域是必須的。Target在web頁面范圍內識別UI元素,它使用locatorType(定位類型)=location(定位值)的格式。

 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>

1、identifier定位
如果沒有定位類型,那么它是一種默認的方式。如果使用這種方式,IDE首先會尋找首個id屬性等於定位置的頁面元素,如果id沒有,那么會尋找首個name屬性等於定位值的頁面元素,如果都沒有,則定位失敗。 identifier = 定位值。

2、id定位:id = 定位值

3、name定位:name = 定位值

4、XPath定位
XPath表達式用於XML文檔中定位節點,當找不到合適的id或name屬性來定位元素時,就可以用XPath。可以使用絕對路徑(不推薦),也可以使用id或name屬性,如果XPath表達式以“//”開頭,那么可以省略“xpath=”,也可不省。
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 = 定位值

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文檔的表現。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/

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

ps:本文參考博主 蟲師的博文,http://www.cnblogs.com/fnng/archive/2012/01/12/2321117.html,以及參考書《selenium自動化測試指南》,趙卓著、《零基礎實現web自動化測試》,溫素劍著。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM