一、常用庫導入
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()

1 # 導入webdriver 2 from selenium import webdriver 3 4 # 創建一個瀏覽器對象 5 driver = webdriver.Firefox() 6 7 # 設置全屏 8 driver.maximize_window() 9 10 # 獲取當前瀏覽器尺寸 11 size = driver.get_window_size() 12 print(size) 13 14 # 設置瀏覽器尺寸 15 driver.set_window_size(400, 400) 16 size = driver.get_window_size() 17 print(size) 18 19 # 獲取瀏覽器位置 20 position = driver.get_window_position() 21 print(position) 22 23 # 設置瀏覽器位置 24 driver.set_window_position(100,200) 25 26 27 # 關閉瀏覽器 28 driver.quit() 29 driver.close()
2.頁面相關操作
請求某個url driver.get(url)
刷新頁面操作 refresh()
回退到之前的頁面 back()
前進到之后的頁面 forward()
獲取當前訪問頁面url current_url
獲取當前瀏覽器標題 title
保存圖片 get_screenshot_as_png()/get_screenshot_as_file(file)
網頁源碼 page_source

# 導包 from selenium import webdriver import time # 創建瀏覽器對象 driver = webdriver.Firefox() # 訪問百度 url1 = 'http://www.baidu.com' driver.get(url1) print('訪問:',url1) # 訪問知乎 url2 = 'https://zhuanlan.zhihu.com/' time.sleep(2) driver.get(url2) print('訪問:',url2) # 后退操作 time.sleep(2) driver.back() print('后退到',url1) # 前進 time.sleep(2) driver.forward() print('前進到',url2) # 顯示當前的url print(driver.current_url) # 顯示當前的頁面標題 print(driver.title) # 保存快照操作 # 自動寫文件 driver.get_screenshot_as_file('baidu.jpg') # 自己寫文件 data = driver.get_screenshot_as_png() with open('baidu2.jpg','wb') as f: f.write(data) data = driver.page_source # 以二進制類型寫入文件 with open('baidu.html','wb') as f: f.write(data.encode())
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)

from selenium import webdriver import time # 創建一個瀏覽器 driver = webdriver.Firefox() # 訪問百度 url = 'http://www.baidu.com' driver.get(url) # 定位到輸入框 el = driver.find_element_by_id('kw') # 輸入selenium el.send_keys('selenium') # 清空操作 el.clear() # 輸入python el.send_keys('python') # 定位到搜索按鈕 el_sub = driver.find_element_by_id('su') # 調用提交 el_sub.click() time.sleep(5) driver.close()
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)

from selenium import webdriver # 導入動作鏈類 from selenium.webdriver import ActionChains # 開瀏覽器 driver = webdriver.Firefox() # 訪問百度 url = 'http://www.baidu.com' driver.get(url) # 定位到logo元素 el_logo = driver.find_element_by_css_selector('#lg > map:nth-child(2) > area:nth-child(1)') # 鼠標右擊操作,操作元素前,需要將操作的元素定位出來並且穿入相應的動作中,如果要執行操作,需要調用perform() ActionChains(driver).context_click(el_logo).perform() # 雙擊定位到的元素,進行切換 ActionChains(driver).double_click(el_logo).perform() # 開一個瀏覽器 driver = webdriver.Firefox() driver.maximize_window() # 訪問京東 url = 'http://www.jd.com' driver.get(url) # 獲取分類組元素 el_list = driver.find_elements_by_class_name('cate_menu_item') #鼠標懸停 for el in el_list: ActionChains(driver).move_to_element(el).perform() time.sleep(1) driver.quit()
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])