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

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

# 導包
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())
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)

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

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


免責聲明!

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



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