Selenium+java -- 元素定位操做

寫在前面

相信不少作web自動化測試的同窗都深有體會,其本質也就是經過操做頁面元素對象來模擬用戶操做行爲,那麼首先咱們先找到這些元素對象,而後才能進行一系列操做。css

那麼,咱們要先告訴自動化工具或者說代碼要操做那個元素,畢竟代碼和工具是沒法像人工同樣識別頁面上的元素的,那麼如何讓這些動做精準的做用到咱們想要做用的元素對象上呢?html

下面咱們就一塊兒來學習元素定位操做,固然若是懂一點JavaScript、HTML基礎的話上手會更快。web

 

查看頁面元素

用360瀏覽器打開博客園個人中心頁面,右鍵選擇審查元素,就能夠看到整個頁面的html代碼了瀏覽器

點擊框中左上角的箭頭圖標,移動鼠標到左面頁頭的歡迎你,Refain,就能夠自動定位到歡迎你,Refain位置處的HTML代碼了,查看到歡迎你,Refain的屬性,咱們能夠清楚的看到有id屬性。工具

 

 

元素定位

 Webdriver經過findElement方法來找到頁面的某個元素,使用的方法有id、linkText、partialLinkText、name、tagName、xpath、className、cssSelector這八種。下面咱們就這些定位方法逐一介紹。學習

以百度首頁搜索框爲例,HTML代碼以下:測試

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

使用id定位

從上面搜索框HTML代碼片斷中,發現有個id="kw"的屬性,咱們就能夠經過這個id定位到這個搜索框spa

WebElement element = driver.findElement(By.id("kw"));

 

小貼士:若是你英文好的話,細心點會發現,By是介詞,用的意思,下面的代碼意思就是用ID的方式查找Id爲kw的元素,當時我就是這麼學的,有點low,可是很好用code

使用name定位

同理,搜索框HTML代碼片斷中,發現有個name="wd"的屬性,咱們也能夠經過name屬性定位到這個搜索框htm

WebElement element = driver.findElement(By.name("wd"));

 

使用class定位

再細心點,你會發現有個className="s_ipt"的屬性,咱們天然也能夠經過className這個屬性定位到這個搜索框

WebElement element = driver.findElement(By.className("s_ipt"));

 

說明,常說的class屬性就是HTML代碼中className屬性,這點注意,別被人笑話了哦

使用tagName定位

屬性找的也差很少了,咱們天然也能夠用標籤(tag)去定位元素

WebElement element = driver.findElement(By.tagName("input"));

 

使用linkText定位

字面意思用超連接定位,通俗點就是精確查詢的超文本定位,下面用一段html代碼爲例

<a href="https://www.cnblogs.com/longronglang/" class="gray" target="_blank">https://www.cnblogs.com/longronglang/</a>

 

這就是一段超連接代碼,我就能夠經過超連接定位這個元素

WebElement element = driver.findElement(By.linkText("https://www.cnblogs.com/longronglang/"));

 

使用partialLink定位

這個方法就是模糊查詢出來的超文本,好比一個網頁中的全部超連接,全部都包含Refain的

WebElement element = driver.findElement(By.partialLinkText("Refain"));

 

使用xpath定位

通常作自動化的人都很喜歡用的一種方式,還接着剛纔百度輸入框的例子,用xpath定位,關於xpath詳細定位操做能夠參考我以前的文章《selenium使用Xpath定位之完整篇》

WebElement element =driver.findElement(By.xpath("//input[@id='kw']"));

 

使用cssSelector定位

一樣這種定位方式也特別受歡迎,這回用css定位,關於css詳細的定位操做能夠參考我以前的文章《selenium之css定位小結》

WebElement element = driver.findElement(By.cssSelector(".s_ipt"));

 

小結:

在這些定位方法中,除開xpath和css,其它的定位方法都很容易理解和掌握如何使用,具體實際腳本開發過程當中使用哪一種方法,仍是看我的習慣,到此,關於selenium的元素定位操做就介紹完了,還請各位同窗多去學習、實踐!

 

原文出處:https://www.cnblogs.com/longronglang/p/11154521.html

相關文章
相關標籤/搜索