Python3.x:Selenium中的webdriver進行頁面元素定位

Python3.x:Selenium中的webdriver進行頁面元素定位

頁面上的元素就像人同樣,有各類屬性,好比元素名字,元素id,元素屬性(class屬性,name屬性)等等。webdriver就是利用元素的這些屬性來進行定位的。css

能夠用於定位的經常使用的元素屬性:html

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

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

  • 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中的 定位一組元素的方法:spa

  • 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()

使用示例:插件

  • id 和name 定位
    #id 
    driver.find_element_by_id('kw')  
    #name
    driver.find_element_by_name('tj_trnews')  
  • class name和tag name定位
    driver.find_element_by_class_name("s_ipt")  
  • link text 與partial link text 定位
    #經過linx text定位
    find_element_by_link_text("新聞")  
    find_element_by_link_text("貼吧")  
    #經過partail link text定位
    find_element_by_link_text("")  
    find_element_by_link_text("")  
  • XPath 定位(插件XPath Checker,Firefox的附件組件,能夠直接右鍵查看元素的XPath。)
    '''
    XPath是一種文檔定位語言。由於HTML能夠看作是XML的一種實現,因此selenium用戶可以使用這種強大的語言在web應用中定位。
    絕對路徑方法:
    從根元素寫起,當元素層級很深的時候,路徑寫的會很長,閱讀性很差,也很難維護。不建議使絕對路徑這樣的方法。
    相對路徑方法:
    經過Firebug很容易獲得相對路徑的xpath,打開Firebug插件,在頁面上的搜索文本框,就能夠顯示出xpath了;
    '''
    
    #經過xpath尋找,任意(*表明)id屬性爲’kw‘的元素
    driver.find_element_by_xpath("//*[@id='kw']").click() 
    #經過xpath尋找,任意(*表明)input屬性爲’kw‘的元素
    driver.find_element_by_xpath("//input[@id='kw']").click()  
    
    #須要根據上級目錄的屬性來定位當前元素
    #經過上一級目錄的id 屬性定位  
    find_element_by_xpath("//span[@id=’input-container’]/input") 
    #經過上三級目錄的id 屬性定位  
    find_element_by_xpath("//div[@id=’hd’]/form/span/input") 
    #經過上三級目錄的name 屬性定位 
    find_element_by_xpath("//div[@name=’q’]/form/span/input")
  • CSS定位
    #這種定位方法是比較難理解
 獲取元素後,解析元素的源碼、屬性值、文本內容:
#返回一個object
data = driver.find_elements_by_tag_name('table')[0]
#返回html源碼
dataHtml = data.get_attribute('innerHTML')
#返回ID值
dataId = data.get_attribute('id')
#返回文本內容
dataText = data.text
相關文章
相關標籤/搜索