Selenium八種基本定位方式---基於python


from selenium import  webdriver

driver=webdriver.Firefox()

driver.get("https://www.baidu.com")

進行web頁面自動化測試,對頁面上的元素進行定位和操作是核心,對頁面元素的定位是進行自動化測試的基礎

可以用於定位的常用的元素屬性:

  • id
  • name
  • class name
  • tag name
  • link text
  • partial link text
  • xpath
  • css selector

對應於webdriver中的定位方法分別是:(定位一個元素的方法

  • driver.find_element_by_name()——最常用,簡單
  • driver.find_element_by_id()——最常用,簡單
  • driver.find_element_by_class_name()
  • driver.find_element_by_tag_name()——最不靠譜
  • driver.find_element_by_link_text()——定位文字連接好用
  • driver.find_element_by_partial_link_text()——定位文字連接好用
  • driver.find_element_by_xpath()——最靈活,萬能
  • driver.find_element_by_css_selector()

webdriver也有定位一組元素的方法:

  • driver.find_elements_by_name()
  • driver.find_elements_by_id()
  • driver.find_elements_by_class_name()
  • driver.find_elements_by_tag_name()
  • driver.find_elements_by_link_text()
  • driver.find_elements_by_partial_link_text()
  • driver.find_elements_by_xpath()
  • driver.find_elements_by_css_selector()

總結:定位一組元素和一個元素在語法上是將element修改為elements,而生成的是一個符合元素的list

查看元素的方法可以使用firefox安裝組件firebug

以百度輸入框為例

1.  通過id進行定位

    語法:driver.find_element_by_id(self,id)

 舉例:driver.find_element_by_id("kw").send_keys("VseYoung")
    
    語法:driver.find_element(self,by,value)
    
    舉例:driver.find_element(by="id",value="kw").send_keys("VseYoung")
    
2.    通過name進行定位

    語法;driver.find_element_by_name(self,name)
    
    舉例:driver.find_element_by_name("wd").send_keys("VseYoung")
    
    語法:driver.find_element(self,by,value)
    
    舉例:driver.find_element(by="name",value="wd").send_keys("VseYoung")

3.    通過class定位
    
    語法;driver.find_element_by_class_name(self,name)
    
    舉例:driver.find_element_by_class_name("s_ipt").send_keys("VseYoung")

4.    通過tag定位
    一般頁面上標簽一樣的很多,通過標簽無法直接定位到某個元素
    通常用於定位一組元素
    
    語法;driver.find_element_by_tag_name(self,name)
    
    舉例:driver.find_element_by_tag_name("input").send_keys("VseYoung")

5.    通過link定位
    主要用於文字鏈接的定位,比如下圖

      語法;driver.find_element_by_link_text(self,link_text)
    
    舉例:driver.find_element_by_link_text("新聞").click()

6.    通過xpath定位
    XPath是一種文檔定位語言。因為HTML可以看做是XML的一種實現,所以selenium用戶可使用這種強大的語言在web應用中定位。
    絕對路徑方法:
        從根元素寫起,當元素層級很深的時候,路徑寫的會很長,閱讀性不好,也很難維護。不建議使絕對路徑這樣的方法。
    相對路徑方法:
        通過Firebug很容易得到相對路徑的xpath,打開Firebug插件,在頁面上的搜索文本框,就可以顯示出xpath了:

//表示當前頁面某個目錄下,input 表示定位元素的標簽名,[@id=‘kw’] 表示這個元素的id 屬性值等於kw;如果不想指定標簽名也可以用星號(*)代替,.表示當前節點。

語法;driver.find_element_by_xpath(self,xpath)
    
    舉例:driver.find_element_by_xpath("//input[@id='kw']").send_keys("123")
          driver.find_element_by_xpath(".//*[@id='su']").click()
    
    driver.find_element_by_xpath("//*[@id='kw']").click()
    詳解:通過xpath尋找,任意(*代表)id屬性為’kw‘的元素
    
    driver.find_element_by_xpath("//input[@id='kw']").click()
    詳解:通過xpath尋找,任意id屬性為’kw‘的input元素
    
    根據上級目錄的屬性來定位當前元素:
    driver.find_element_by_xpath("//span[@id=’input-container’]/input")    #通過上一級目錄的id 屬性定位  
    driver.find_element_by_xpath("//div[@id=’hd’]/form/span/input")        #通過上三級目錄的id 屬性定位  
    driver.find_element_by_xpath("//div[@name=’q’]/form/span/input")       #通過上三級目錄的name 屬性定位  

xpath 神器://input[text()=u'百度一下']

driver.find_element_by_xpath("//input[@value='百度一下']").click()


7.    通過css定位
    使用firepath組件即可查詢相關元素的CSS定位
    CSS(Cascading Style Sheets)是一種語言,它被用來描述HTML 和XML 文檔的表現
    
    語法:driver.find_element_by_css_selector(self,css_selector)
    
    舉例:driver.find_element_by_css_selector("#kw").send_keys("VseYoung")
          driver.find_element_by_css_selector("#su").click()

8.    通過partial link text定位
    partial link text定位與link text的區別在於,partial link text定位時,只需要輸入文字鏈接的部分內容即可完成定位
    
    語法;driver.find_element_by_partial_link_text(self,link_text)
    
    舉例:driver.find_element_by_partial_link_text("新").click()
   

 

 

  


免責聲明!

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



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