【基礎】selenium中元素定位的常用方法(三)


一、Selenium中元素定位共有八種

id

name

className

tagName

linkText

partialLinkText

xpath

cssSelector

其中前六種都比較簡單,通過id一般可以得到一個唯一的定位,其他五種要注意元素是否唯一,如果有多個,返回的是匹配的第一個元素。下面詳細講解一下xpath和cssSelector定位。

 

二、xpath定位

1.通過絕對路徑定位

dr.findElement(By.xpath("/html/body/div[2]/div/div/div/div/form/span/input"));

個人測試,第一個html前的斜杠可以有也可以沒有。xpath定位時,下標從1開始,如div[2]代表第二個div

2.通過相對路徑定位

dr.findElement(By.xpath("//body/div[2]/div/div/div/div/form/span/input"));

3.通過屬性值定位

dr.findElement(By.xpath("input[@]id='su'"));

4.通過層級定位,某個元素不容易定位,但是它的父元素可以容易定位到

dr.findElement(By.xpath("//form[@id='form']/span/input"));

5.通過多個屬性的邏輯運算符

dr.findElement(By.xpath("//input[@id='kw' and @class='s_ipt']") );

注意:

當值中含空格的時候,會定位不到,如這樣定位dr.findElement(By.className("bg s_btn"));所以當有空格時,建議換一個其他的值進行定位。

 

三、通過cssSelector定位

選擇器 例子 說明
.class .s_ipt 類名為s_iptd的所有元素
#id #kw id為kw的所有元素
父元素>子元素 span>input 父元素為span的所有input元素
[attribute=value] [type='submit'] type為submit的所有元素

 

 

 

 

1.通過id選擇器定位

dr.findElement(By.cssSelector("input#kw") ).sendKeys("test");

2.通過類名定位器定位

dr.findElement(By.cssSelector("input.s_ipt")).sendKeys("test");

3.通過父子元素

dr.findElement(By.cssSelector("form#form>span>input[name='wd']")).sendKeys("test");

4.通過屬性名,多個時,將屬性用[]連接在一起
dr.findElement(By.cssSelector("input[id='kw'][name='wd']")).sendKeys("test");

 

兩者對比:

css語法比xpath更加復雜點,但是定位速度更快,語法更加簡潔。

 


免責聲明!

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



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