selenium經常使用方法整理

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

相關文章
相關標籤/搜索