二、元素定位方式

web頁面的元素定位方式共有8種:css

一、id定位     使用  find_element_by_id()  方法web

二、name定位  使用   find_element_by_name()  方法spa

三、class定位    使用   find_element_by_class_name() 方法code

四、tag定位    使用     find_element_by_tag_name()  方法orm

  HTML自己就是經過tag來定義實現不一樣的功能,如<div>,<input>,<a>等就是tag,因此很難經過標tag name 去區分不一樣的元素blog

五、link定位    使用     find_element_by_link_text()  方法ip

  link定位專門用來定位超連接,文本連接element

六、partial link 定位   使用     find_element_by_partial_link()  方法input

  partial link 定位是對link定位的一種補充,有些文本連接比較長,咱們能夠取文本連接的一部分定位,只要這一部分信息能夠惟一的標識這個連接selenium

  如:「這是一個很長很長的文本連接」   定位的時候能夠這樣寫:find_element_by_partial_link(「這是一個很長」)

七、XPath 定位    find_element_by_xpath()  方法

  7.1 絕對路徑定位

    絕對路徑定位的方法不經常使用,路徑太長

  7.2 利用元素屬性定位

     1 driver.find_element_by_xpath('//input[@id="kw"]') 

    //表示當前頁面某個目錄下,input表示定位元素的標籤名,[@id = 'kw']表示這個元素的id屬性值等於kw

    若是不想指定標籤名,也可使用星號(*)代替,元素的任意屬性值均可以使用,只要它能惟一標識這個元素便可

     1 driver.find_element_by_xpath("//*[autocomplete='off']") 

  7.3 層級與屬性結合

    若是一個元素自己沒有能夠惟一標識這個元素的屬性值,那麼能夠找其上一級元素,知道有能夠惟一標識的屬性值便可

     1 driver.find_element_by_xpath("//span[class=soutu-btn]/input") 

  7.4 使用邏輯運算符

    若是一個屬性沒法惟一一個元素,那麼能夠考慮使用邏輯運算付鏈接多個屬性來查找元素

     1 driver.find_element_by_xpath("//input[@id='kw' and @name='wd']") 

八、css 定位  使用方法:find_element_by_css_selector()

  css能夠較爲靈活的選擇控件的任意屬性,定位速度比xpath快

  8.1經過class屬性定位,用(.)號表示:

   1 driver.find_element_by_css_selector(".s_ipt") 

  8.2經過id屬性定位,用(#)號表示:

   1 driver.find_element_by_css_selector("#kw") 

  8.3經過標籤名定位:

1 driver.find_element_by_css_selector("input")
2 #經過父子關係定位
3 driver.find_element_by_css_selector("span>input")
4 #經過屬性定位
5 driver.find_element_by_css_selector("[name='kw']")
6 #組合定位
7 driver.find_element_by_css_selector("form.fm>span>input.s_ipt")

九、用By定位元素

  針對前面八種定位方法,webdriver還提供了另一種寫法,即統一調用  find_element( ) 方法,經過By來聲明定位的方法,而且傳入對應定位方法的定位參數

  在使用By定位元素的時候,首先須要到時By類

   1 from selenium.webdriver.common.by import By  

1     driver.find_element(By.ID,"kw")
2     driver.find_element(By.NAME,"wd")
3     driver.find_element(By.CLASS_NAME,"s_ipt")
4     driver.find_element(By.TAG_NAME,"input")
5     driver.find_element(By.LINK_TEXT,"新聞")
6     driver.find_element(By.PARTIAL_LINK_TEXT,"")
7     driver.find_element(By.XPATH,"//input[@id='kw']")
8     driver.find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
相關文章
相關標籤/搜索