1、經常使用庫導入css
1.from selenium import webdriver 導入webdriver模塊html
2.from selenium.webdriver import ActionChains 導入動做鏈類,動做鏈能夠儲存鼠標的動做,並一塊兒執行python
3.from selenium.webdriver.common.key import Key 鍵盤操做使用的是Keys類,通常配合send_keys使用web
4.from selenium.webdriver.support.select import Select 下拉框的操做都交由Select類進行處理瀏覽器
5.from selenium.webdriver.common.by import Bycookie
from selenium.webdriver.support.ui import WebDriverWait框架
from selenium.webdriver.support import expected_conditions as EC 顯示等待使用的類ide
2、基本操做ui
1.瀏覽器相關操做url
建立瀏覽器對象 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])