【Selenium專題】元素定位之一簡單定位

UI自動化工具變幻無窮、架構變幻無窮,但都逃離不開的關鍵一步就是元素定位。下面以Selenium爲例介紹常見的幾個元素定位方法javascript

ID -元素id屬性css

WebElement El = driver.findElement(by.id(「id」))html

name-元素name屬性java

WebElement El=driver.findElement(by.name(「name」))正則表達式

className-元素class屬性數組

WebElement El = driver.findElement(by.className(「className」));架構

tagName-元素標籤名ide

WebElement El = driver.findElement(by.tagName(「button」))工具

linkText-連接元素a的顯示文字spa

WebElement El = driver.findElement(By.linkText("Inbox"));

partialLinkText

WebElement El = driver.findElement(By.partialLinkText("Inbox"));


 

補充:以上知識遍地都有,很少贅述。但真實環境中遇到的DOM每每很複雜的多,下面咱們來分析一下可能會遇到的幾種狀況


1.分級定位:複雜環境能夠先定位父級元素,而後再定位子元素,例如parentElement.findElement(By.***)

2.ID定位是最快速最準確的,但實際上須要開發人員的友好配合纔能有惟一且肯定的id可用,真實環境中每每會出現沒有id,id重複或者動態id(extjs和query都是動態id);若動態id有規律咱們還能考慮使用正則表達式,不然只能老老實實另謀出路了。

3.定位數組元素:實際使用中className和tagName常常被用來定位數組元素,例如driver.findElements(by.tagName(「**」))或driver.findElements(by.className(「**」))

  例如,打開www.baidu.com,運行List<WebElement> Els= driver.findElements(by.tagName(「a」));看看是否是獲得了一個元素數組

4.className不容許使用複合類名作參數

   真實環境中元素每每使用複合類名(即多個class用空格分隔),使用className定位時要注意了,className的參數只能是一個class。

  例如,打開http://hao.360.cn/,咱們要使用className定位這個元素

<a class="tab-item news" data-page="http://sh.qihoo.com/daohang/index1.html" hidefocus="false"href="./brother.html#!news">新聞頭條</a>

  1)執行driver.findElements(by.className("news")),成功定位到元素

  2)執行driver.findElements(by.className("tab-item news")),定位失敗,報錯信息:Compound class names not permitted,意思是不容許使用複合類名稱

  分析:className的參數僅容許是一個class,此處class="tab-item news"是複合類名,直接使用會報錯

5.linkText與partialLinkText

  遇到文字連接元素,首先考慮使用linkText定位,那它與partialLinkText有什麼區別與特性吶?

  1) linkText=連接文字,表示精準匹配連接文字;partialLinkText=部分連接文字,表示模糊匹配連接文字。例如定位一下元素

<a target="_blank" title="" href="http://www.nuomi.com/?cid=bdsywzl">勞動節不勞動,吃喝玩樂5.1元起!</a>

 

    | driver.findElement(By.linkText("勞動節不勞動,吃喝玩樂5.1元起!"));

    | driver.findElement(By.partialLinkText("吃喝玩樂"));

  2.都對大小寫敏感

 

 

這篇文章對二者進行了詳細的介紹並附有案例http://blog.csdn.net/aerchi/article/details/8931023複雜定位:cssselector、xpath、javascript正在路上........
相關文章
相關標籤/搜索