查找元素的方法_第1頁(yè)
查找元素的方法_第2頁(yè)
查找元素的方法_第3頁(yè)
查找元素的方法_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1、工具選擇:在我們開(kāi)發(fā)測(cè)試腳本的過(guò)程中各個(gè)瀏覽器給我們也提供了方便定位元素的工具,我比較喜歡使用firefox的firebug工具,也是目前很多開(kāi)發(fā)測(cè)試人 員比較熱衷的選擇,原因是firefox是唯一能夠集成selenium IDE的瀏覽器,并且firebug給用戶提供了豐富的擴(kuò)展組件,我們可以根據(jù)自己的需要來(lái)選擇,一般情況下,使用firebug+firefinder 就足夠使用了,firefinder支持xpath以及css選擇器定位元素的功能,很方便幫助我們調(diào)試測(cè)試腳本 2、元素定位的方法:findElement() 與 findElements() findElement() 該方法返

2、回基于指定查詢條件的webElement對(duì)象,或拋出不符合條件的異常 eg:driver.findElement(By.id("userID"); findElements() 該方法返回指定查詢條件的WebElement的對(duì)象集合,或返回null 3、WebElement對(duì)象提供的各種定位元素策略 ID:driver.findElement(By.id(<elementID>)Name:driver.findElement(B(<elementName>)className:driver.findElement(By.className

3、(<elementClassName>)tagName:driver.findElement(By.tagName(<htmlTagName>)linkText:driver.findElement(By.linkText(<linkText>)partialLinkText:driver.findElement(By.partialLinkText(<partialLinkText>)css:driver.findElement(By.cssSelector(<cssSelector>)xpath:driver.findElemen

4、t(By.xpath(<xpathQuery>)4、webelement類提供了諸多方法,在我們開(kāi)發(fā)腳本過(guò)程中如何選擇最可靠,效率最高的方法,使用id,name是首選,因?yàn)樗麄冊(cè)趆tml標(biāo)簽中是唯一的,所以是最可靠的 ID定位:driver.findElement(By.id("username") name定位:driver.findElement(B("username") class定位:driver.findElement(By.className("username") 多學(xué)一招:WebElement

5、類支持查詢子類元素,如果頁(yè)面中存在重復(fù)元素,但在不同div中,我們可以先定位到其父元素,然后定位其子元素,方法如下: WebElement hello = driver.findElement(By.id("div1").findElement(By.lindText("hello"); 5、使用WebElements定位多個(gè)相似的元素,比如頁(yè)面中存在五個(gè)單選按鈕,他們有相同的class屬性,值為:myRadio,我們想對(duì)五個(gè)按鈕循環(huán)操作,我們可以把它們?nèi)咳〕鰜?lái)放到集合中,然后做循環(huán)操作,如下: List<WebElement> radio

6、s = driver.findElements(By.className("myRadio");for(int i = 0;i<radios.size();i+)radios.get(i).click();其他定位方法與操作id,name類似,這里不再贅述,接下來(lái)我著重對(duì)css選擇器與Xpath描述下一、WebDriver 的By類中提供了cssSelector()方法,該方法使用有以下幾種形式:1、使用相對(duì)路徑定位元素如,我們要定為DOM中的input元素,我們可以這樣操作,不考慮其在DOM中的位置,但這樣做存在一定弊端,當(dāng)DOM中存在多個(gè)input元素時(shí),該方法總

7、返回DOM中的第一個(gè)元素,這并不是我們所期待的eg:WebElement username = driver.findElement(By.cssSelector("input");另外,為了使用這種方法更準(zhǔn)確的定位元素,我們可以結(jié)合該元素的其他屬性來(lái)實(shí)現(xiàn)精確定位的目的a、結(jié)合id來(lái)定位,driver.findElement(By.cssSelector("input#username"); 在標(biāo)簽與id之間使用#連接,如果對(duì)css了解的朋友一看就知道為什么會(huì)這樣寫了,不了解也沒(méi)關(guān)系,只要記住這種寫法就OK了另外該方法也可簡(jiǎn)寫為driver.findEl

8、ement(By.cssSelector("#username"); 有點(diǎn)兒類似于id選擇器b、使用元素的任何屬性來(lái)定位元素 driver.findElement(By.cssSelector("標(biāo)簽名屬性名='屬性值'"); c、匹配部分屬性值 = driver.findElement(By.cssSelector("標(biāo)簽名屬性名='xxx'"); 匹配屬性值以xxx開(kāi)頭的元素$= driver.findElement(By.cssSelector("標(biāo)簽名屬性名$='xxx'

9、;"); 匹配屬性值以xxx結(jié)尾的元素*= driver.findElement(By.cssSelector("標(biāo)簽名屬性名='xxx'"); 匹配屬性值包含xxx的元素2、使用相對(duì)+絕對(duì)路徑方法,這里是我自己定義的方法,方便記憶,的確也是這樣來(lái)實(shí)現(xiàn)的 driver.findElement(By.cssSelector("div#login>input") 該方法中“div#login>input” 首先通過(guò)相對(duì)路徑定位到id為login的div元素,然后查找其子元素input(絕對(duì)路徑) 二、使用xpath定位元

10、素,相比cssSelector,xpath是我比較常用的一種定位元素的方式,因?yàn)樗芊奖悖秉c(diǎn)是,消耗系統(tǒng)性能 1、使用絕對(duì)路徑定位元素 driver.findElement(By.xpath("/html/body/div/form/input") 2、使用相對(duì)路徑定位元素 driver.findElement(By.xpath("/input") 返回查找到的第一個(gè)符合條件的元素 3、使用索引定位元素,索引的初始值為1,注意與數(shù)組等區(qū)分開(kāi) driver.findElement(By.xpath("/input2") 返回查找到的第

11、二個(gè)符合條件的元素 4、結(jié)合屬性值來(lái)定位元素 driver.findElement(By.xpath("/inputid='username'"); driver.findElement(By.xpath("/imgalt='flowr'"); 5、使用邏輯運(yùn)算符,結(jié)合屬性值定位元素,and與or driver.findElement(By.xpath("/inputid='username' and name='userID'"); 6、使用屬性名來(lái)定位元素 drive

12、r.findElement(By.xpath("/inputbutton") 7、類似于cssSlector,使用部分屬性值匹配元素 starts-with() driver.findElement(By.xpath("/inputstars-with(id,'user')")ends-with driver.findElement(By.xpath("/inputends-with(id,'name')")contains() driver.findElement(By.xpath("/inputcontains(id,"ernam")")8、使用任意屬性值匹配元素 driver.findElement(By.xpath("/input*='username'") 9、使用xpath軸來(lái)定位元素 這里略了,詳見(jiàn) 三、使用innerText定位元素 1、使用cssSelector查找innerText定位元素 driver.findElement(By.cssSelector("spante

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論