Selenium元素定位的幾種方式


一、通過id查找

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

element = driver.find_element_by_id("kw") 

 

二、通過name查找

例:<input name="cheese" type="text"/>

cheese = driver.find_element_by_name("cheese")

 

三、通過classname查找

例:<div class="cheese"><span>Cheddar</span></div>

cheeses = driver.find_elements_by_class_name("cheese")

 

四、通過標簽名查找

例:<iframe src="..."></iframe>

frame = driver.find_element_by_tag_name("iframe")

 

五、通過鏈接文本查找

例:<a href="http://www.baidu.com">轉到百度</a>

ele = driver.find_element_by_link_text("轉到百度")

 注:有的時候,鏈接的文本很長,我們甚至只需要通過部分文本去找到該鏈接元素

只要這個鏈接文本是唯一的就行

 

六、通過CSS選擇器查找

eles = driver.find_element_by_css_selector('#choose_car option')

 基本用法:

方式

用法

舉例

描述

根據class查找

.class

.intro

查找class=intro元素

根據id查找

#id      

#firstname

查找id=firstname的元素

根據標簽名查找

tagname

div

查找<div>元素

根據屬性查找

[attribute]

[target]

查找具有target屬性的元素

[attribute=value]

[target=_blank]

查找包含target=_blank的元素

[attribute^=value]

[href^=https]

查找包含href屬性,且該屬性的值以https開頭的元素

[attribute$=value]

[href$=.pdf]

查找包含href屬性,且該屬性的值以.pdf結尾的元素

[attribute*=value]

[href*=abc]

查找包含href屬性,且該屬性的值包含“abc的元素

高級用法:

用法

舉例

描述

后代元素選擇器

div p

選擇所有在<div>里面的<p>

子元素選擇器

div>p

選擇所有<div><p>子元素

組選擇器,同時選擇多個元素

<div>,<p>

同時選擇所有的<div>元素和<p>元素

相鄰兄弟元素

<div>+<p>

選擇所有<div>后面緊跟的<p>元素

兄弟元素

<div>~<p>

選擇所有<div>元素后面的<P>元素(不一定要緊跟)

:empty

p:empty

選擇沒有子節點(包括文本)的<p>元素

:first-child

p:first-child

選擇所有是 父元素第一個元素<p>元素

:first-of-type

p:first-of-type

選擇所有是 父元素第一個<p>元素<p>元素

:last-child

p:last-child

選擇所有是其父元素最后一個元素<p>元素

:last-of-type

p:last-of-type

選擇所有是其父元素最后一個<p>元素<p>元素

:nth-child(n)

p:nth-child(2)

選擇所有是其父元素第二個元素<p>元素

:nth-of-type(n)

p:nth-of-type(2)

選擇所有是其父元素的第二個<p>元素<p>元素

:nth-last-child(n)

p:nth-last-child(2)

選擇所有是其父元素倒數第二個元素的<p>元素

:nth-last-of-type(n)

p:nth-last-of-type

選擇所有是其父元素倒數第二個<p>元素<p>元素

:only-child

p:only-child

選擇所有是其父元素唯一一個子元素<p>元素

:only-of-type

p:only-of-type

選擇所有是其父元素唯一一個<P>子元素的<p>元素

:not(selector)

:not(p)

選擇所有不是<p>元素的元素

 

七、通過Xpath查找

eles = food.find_elements_by_xpath('./p')

基本用法:

用法

舉例

描述

絕對路徑(/

/html/body/div/p

表示html文檔中的p節點,xpath路徑表示了元素的位置

相對路徑(//

//footer//p

表示footer元素中所有的后代P類型元素

混合使用

//footer/div/p

表示html文檔中footer元素下的div元素下的p元素

根據屬性選擇

//*[@style]

表示選擇HTML文檔下所有包含style屬性的元素

//p[@spec='len2']

選擇所有具有spec 屬性且值為“len2” p元素

//a[contains(@href,'51job.com')]

 

選擇所有具有href屬性,且該屬性的值包含“51job.com”a元素

//a[starts-with(@href,'http://big5.51job')]

表示屬性href“http://big5.51job”開頭

 高級用法:

方式

用法

舉例

描述

根據文本定位元素

 

全部文字

//*[text()='花唄套現']

文本等於“花唄套現”的元素

部分文字 //*[contains(text(),'花唄') 文本包含"花唄”的元素

子元素選擇器

根據下標獲取(下標從1開始)

//div[@id='food']/p[1]

獲取第一個p子元素

倒數索引

//div[@id='food']/*[last()](倒數第一個)

//div[@id='food']/*[last()-1](倒數第二個) 

//div[@id='food']/*[last()-2](倒數第三個)

last()代表倒數第一個元素

 

postion():代表元素的位置

//div[@id='food']/*[position()=2]

表示第二個元素

//div[@id='food']/[position()=last()] 

表示最后一個元素

//div[@id='food']/[position()=last()-2]

表示倒數第三個元素

//div[@id='food']/[position()>=last()-2]

表示最后三個元素

組選擇器

用豎線隔開

//p | //button

等價於css中的p, button

相鄰兄弟選擇器

following-sibling::

//*[@id=’food’]/following-sibling::div  

選擇id=food節點的相鄰兄弟div元素

 

preceding-sibling::

//*[@id=’food’]/preceding-sibling::div

選擇id=food節點的前面的兄弟P元素

 

元素的相對定位:

如:

food = driver.find_element_by_id("food")

eles = food.find_elements_by_xpath('./p')

如果不加點  ,eles = food.find_elements_by_xpath('/p')   與    eles = driver.find_elements_by_xpath('/p')  -----這兩個方式效果是一樣的


免責聲明!

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



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