1. 程式人生 > >selenium中元素定位的常用方法

selenium中元素定位的常用方法

詳細講解 sub mit 匹配 end sss nbsp strong pat

一、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更加復雜點,但是定位速度更快,語法更加簡潔。

selenium中元素定位的常用方法