python 爬蟲(九)selenium常用方法總結

一、selenium常用方法


注意:下面的driver均爲實例化對象

from selenium import webdriver
#1創建driver對象
driver = webdriver.Phantomjs()

1.獲取當前頁面的Url

方法:current_url  
實例:driver.current_url

2.獲取元素座標

方法:location
解釋:首先查找到你要獲取元素的,然後調用location方法
實例:driver.find_element_by_xpath("xpath").location

3.表單的提交

方法:submit
解釋:查找到表單(from)直接調用submit即可
實例:driver.find_element_by_id("form1").submit()

4.獲取CSS的屬性值

方法:value_of_css_property(css_name)
解釋:查找到css選擇器標籤選擇器input獲取CSS的屬性值input.btn
實例:driver.find_element_by_css_selector("input.btn").value_of_css_property("input.btn")

5.獲取元素的屬性值

方法:get_attribute(element_name)
解釋:查找到id爲kw的值
實例:driver.find_element_by_id("kw").get_attribute("kw")

6.判斷元素是否被選中

方法:is_selected()
實例:driver.find_element_by_id("form1").is_selected()

7.返回元素的大小

方法:size
實例:driver.find_element_by_id("iptPassword").size
返回值:{'width': 250, 'height': 30}

8.判斷元素是否顯示

方法:is_displayed()
實例:driver.find_element_by_id("iptPassword").is_displayed()

9.判斷元素是否被使用

方法:is_enabled()
實例:driver.find_element_by_id("iptPassword").is_enabled()

10.獲取元素的文本值

方法:text
實例:driver.find_element_by_id("iptUsername").text

11.元素賦值

方法:send_keys(*values)
實例:driver.find_element_by_id("iptUsername").send_keys('admin')

12.返回元素的tagName

方法:tag_name
實例:driver.find_element_by_id("iptUsername").tag_name

13.刪除瀏覽器所有的cookies

方法:delete_all_cookies()
實例:driver.delete_all_cookies()

14.刪除指定的cookie

方法:delete_cookie(name)
實例:deriver.delete_cookie("my_cookie_name")

15.關閉瀏覽器

方法:close()
實例:driver.close()

16.關閉瀏覽器並且退出驅動程序

方法:quit()
實例:driver.quit()

17.返回上一頁

方法:back()
實例:driver.back()

18.清空輸入框

方法:clear()
實例:driver.clear()

19.瀏覽器窗口最大化

方法:maximize_window()
實例:driver.maximize_window()

20.查看瀏覽器的名字

方法:name
實例:drvier.name

21.返回當前會話中的cookies

方法:get_cookies()
實例:driver.get_cookies()

22.根據cookie name 查找映射Value值

方法:driver.get_cookie(cookie_name)
實例:driver.get_cookie("NET_SessionId")

23.截取當前頁面

方法:save_screenshot(filename)
實例:driver.save_screenshot("D:\\Program Files\\Python27\\NM.bmp")

二、selenium十八種定位方法


前八種是大家都熟悉的,經常會用到的

  • 1.id定位: find_element_by_id(self, id_)
  • 2.name定位: find_element_by_name(self, name)
  • 3.class定位: find_element_by_class_name(self, name)
  • 4.tag定位: find_element_by_tag_name(self, name) ## 標籤名
  • 5.link定位: find_element_by_link_text(self, link_text)
  • 6.partial_link定位 : find_element_by_partial_link_text(self, link_text)
  • 7.xpath定位: find_element_by_xpath(self, xpath)
  • 8.css定位: find_element_by_css_selector(self, css_selector)

這八種是複數形式

  • 9.id複數定位: find_elements_by_id(self, id_)
  • 10.name複數定位: find_elements_by_name(self, name)
  • 11.class複數定位: find_elements_by_class_name(self, name)
  • 12.tag複數定位: find_elements_by_tag_name(self, name)
  • 13.link複數定位: find_elements_by_link_text(self, text)
  • 14.partial_link: 複數定位find_elements_by_partial_link_text(self, link_text)
  • 15.xpath複數定位: find_elements_by_xpath(self, xpath)
  • 16.css複數定位: find_elements_by_css_selector(self, css_selector

這兩種就是快失傳了的

  • 17.find_element(self, by=‘id’, value=None)
  • 18.find_elements(self, by=‘id’, value=None)
  1. element方法定位到是是單數,是直接定位到元素

  2. elements方法是複數,這個學過英文的都知道,定位到的是一組元素,返回的是list隊列

  3. 可以用type()函數查看數據類型

  4. 打印這個返回的內容看看有什麼不一樣
    在這裏插入圖片描述

elements用法總結:
何時使用: 用elements方法如何定位元素,當一個頁面上有多個屬性相同的元素時,然後父元素的屬性也比較模糊,不太好定位。

使用方法: 這個時候不用怕,換個思維,別老想着一次定位到,可以先把相同屬性的元素找出來,取對應的第幾個就可以了。


三、selenium方法整理


一、常用庫導入


1.from selenium import webdriver 導入webdriver模塊

2.from selenium.webdriver import ActionChains 導入動作鏈類,動作鏈可以儲存鼠標的動作,並一起執行

3.from selenium.webdriver.common.key import Key 鍵盤操作使用的是Keys類,一般配合send_keys使用

4.from selenium.webdriver.support.select import Select 下拉框的操作都交由Select類進行處理

5.from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC 顯示等待使用的類


二、基本操作


1.瀏覽器相關操作

創建瀏覽器對象  driver = webdriver.xxx()

窗口最大化    maximize_window()

獲取瀏覽器尺寸  get_window_size()

設置瀏覽器尺寸  set_window_size()

獲取瀏覽器位置  get_window_position()

設置瀏覽器位置  set_window_position(x,y)

關閉當前標籤/窗口 close()

關閉所有標籤/窗口  quit()

View Code


2.頁面相關操作

請求某個url      driver.get(url)

刷新頁面操作     refresh()

回退到之前的頁面   back()

前進到之後的頁面   forward()

獲取當前訪問頁面url  current_url

獲取當前瀏覽器標題  title

保存圖片       get_screenshot_as_png()/get_screenshot_as_file(file)

網頁源碼       page_source

View Code


3.頁面元素的定位(八種定位方式)

id定位       driver.find_element_by_id(value)

name屬性值定位  driver.find_element_by_name(value)

類名定位      driver.find_element_by_class_name(value)

標籤名定位     driver.find_element_by_tag_name(value)

鏈接文本定位    driver.find_element_by_link_text(value)

部分鏈接文本    driver.find_element_by_partial_link_text(value)

xpath路徑表達式  driver.find_element_by_xpath(value)

css選擇器     driver.find_element_by_css_selector(value)


4.元素的操作

對元素的相關操作,一般要先獲取到元素,再調用相關方法 element = driver.find_element_by_xxx(value)

點擊操作    element.click()

清空輸入框   element.clear()

輸入框輸入數據 element.send_keys(data)

獲取文本內容(既開閉標籤之間的內容)  element.text

獲取屬性值(獲取element元素的value屬性的值)  element.get_attribute(value)

View Code


5.鼠標和鍵盤操作

鼠標操作需要導入類,見第一部分,然後創建對象ActionChains(driver),鍵盤操作導入類見第一部分

鼠標右擊

el = driver.find_element_by_xxx(value)

context_click(el)

鼠標雙擊

el = driver.find_element_by_xxx(value)

ActionChains(driver).double_click(el).perform()

鼠標懸停

el = driver.find_element_by_xxx(value)

ActionChains(driver).move_to_element(el).perform()

常用鍵盤操作

send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)

send_keys(Keys.SPACE) 空格鍵(Space)

send_keys(Keys.TAB) 製表鍵(Tab)

send_keys(Keys.ESCAPE) 回退鍵(Esc)

send_keys(Keys.ENTER) 回車鍵(Enter)

send_keys(Keys.CONTROL,‘a’) 全選(Ctrl+A)

send_keys(Keys.CONTROL,‘c’) 複製(Ctrl+C)

send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)

View Code


6.彈出框操作

進入到彈出框中  driver.switch_to.alert()

接收警告     accept()

關閉警告     dismiss()

發送文本到警告框 send_keys(data)


7.下拉框操作

將定位到的下拉框元素傳入Select類中  selobj = Select(element)

通過索引選擇,index 索引從 0 開始  select_by_index()

通過值選擇(option標籤的一個屬性值)  select_by_value()

通過文本選擇(下拉框的值)  select_by_visible_text()

查看所有已選  all_selected_options

查看第一個已選  first_selected_option

查看是否是多選  is_multiple

查看選項元素列表  options

取消選擇   deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()


8.滾動條操作

js = "window.scrollTo(x,y) " x爲水平拖動距離,y爲垂直拖動舉例

driver.execute_script(js)

js= “var q=document.documentElement.scrollTop=n” n爲從頂部往下移動滾動舉例

driver.execute_script(js)


9.cookies操作

獲取所有cookies  get_cookies()

獲取key對應的值  get_cookie(key)

設置cookies  add_cookie(cookie_dict)

刪除指定名稱的cookie  delete_cookie(name)

刪除所有cookie  delete_all_cookies()


10.多標籤/多窗口、多表單/多框架切換

多表單/多框架切換

直接使用id值切換進表單   driver.switch_to.frame(value)

定位到表單元素,再切換進入

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el)

跳回最外層的頁面  driver.switch_to.default_content()

跳回上層的頁面  driver.switch_to.parent_frame()

多標籤/多窗口之間的切換

獲取所有窗口的句柄   handles = driver.window_handlers

通過窗口的句柄進入的窗口  driver.switch_to.window(handles[n])


發佈了107 篇原創文章 · 獲贊 43 · 訪問量 7045
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章