總結了Python+selenium常用的一些方法函數,以后有新增再隨時更新:
-
加載瀏覽器驅動: webdriver.Firefox()
-
打開頁面:get()
-
關閉瀏覽器:quit()
-
最大化窗口: maximize_window()
-
設置窗口參數:set_window_size(600,800)
-
后退到前一頁: back()
-
前進到后一頁: forward()
-
刷新頁面: refresh()
-
獲得title並打印
-
-
# coding:utf-8 from selenium import webdriver title = driver.title print title #拿當前title名稱進行預期比較 if title == u"百度一下,你就知道": print "title yes!" else: print "title no!" #獲得當前URL並打印 url = driver.current_url print url
-
-
-
元素定位:
- id定位:find_element_by_id()
- name定位:find_element_by_name()
- class定位:find_element_by_class()
- tag定位:find_element_by_tag_name()
- link定位:find_element_by_link_text()
- partial link 定位: find_element_by_partial_link_text()
- Xpath定位:
- 絕對路徑:find_element_by_xpath("絕對路徑")
- 元素屬性:find_element_by_xpath("//unput[@id='kw']")
- 層級與屬性結合:find_element_by_xpath("//form[@id='loginForm']/ul/input[1]")
- 邏輯運算符:find_element_by_xpath("//input[@id='kw' and@class='s_ipt']")
- CSS定位:find_element_by_css_selector()
選擇器 |
例子 |
描述 |
.class |
.intro |
Class選擇器,選擇class=“intro”的所有元素 |
#id |
#firstname |
Id選擇器,選擇id=“firstname”的所有元素 |
* |
* |
選擇所有元素 |
Element |
P |
元素所有<p>元素 |
Element>element |
div>input |
選擇父元素為<div>元素之后的所有<input>元素 |
Element+element |
Div+input |
選擇同一級中緊接在<div>元素之后的所有<input>元素 |
[attribute=value] |
[target=_blank] |
選擇target=”_blank”的所有元素 |
10.清除文本:clear()
11.模擬按鍵輸入:send_keys(*value)
12.單擊元素:click()
13.提交表單(相當於"回車"):submit()
14.鼠標事件:
ActionChains 類提供了鼠標操作的常用方法:
引入ActionChains類:from selenium.webdriver.common.action_chains import ActionChains
- perform():執行所有ActionsChains中存儲的行為
context_click() 右擊
——如:RightClick = driver.find_element_by_id("id")
ActionChains(driver).context_click(RightClick).perform()
double_click() 雙擊
——如:DoubleClick = driver.find_element_by_name("name")
ActionChains(driver).double_click(DoubleClick).perform()
drag_and_drop(source, target) 鼠標拖放
——source:鼠標按下的源元素;target:鼠標釋放的目標元素
——如:element = driver.find_element_by_name("name")
target = driver.find_element_by_name("name")
ActionChains(driver).drag_and_drop(element, target).perform()
move_to_element() 鼠標懸停在一個元素上(出現下拉列表框)
——如:above = driver.find_element_by_xpath("xpath路徑")
ActionChains(driver).move_to_element(above).perform()
click_and_hold() 按下鼠標左鍵在一個元素上
——如:left = driver.find_element_by_name("name")
ActionChains(driver).click_and_hold(left).perform()
Python代碼:
# 引入ActionChains類 from selenium.webdriver.common.action_chains import ActionChains # ...... # 定位到要右擊的元素 element=driver.find_element_by_css_selector("#kw") #右擊操作 ActionChains(driver).context_click(element).perform() # ......
15.鍵盤事件:
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+(Ctrl+A)) |
send_keys(Keys.F1) |
鍵盤F1 |
…… |
|
send_keys(Keys.F12) |
鍵盤F12 |
Python代碼:
# 引入Key模塊 from selenium.webdriver.common.keys import Keys # ...... # ctrl+a全選輸入框內容 driver.find_element_by_css_selector("#kw").send_keys(Keys.CONTROL,'a') # ......
16.元素等待:
(1)顯示等待
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # ...... element=WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located((By.ID,'kw'))) # ......
(2)隱式等待
from selenium.common.exceptions import NoSuchElementException # ...... drive.implicitly_wait(10) # ......
17.定位一組元素:
-
- find_elements_by_id()
- find_elements_by_name()
- find_elements_by_class()
- find_elements_by_tag_name()
- find_elements_by_link_text()
- find_elements_by_partial_link_text()
- find_elements_by_xpath()
- find_elements_by_css_selector()
# 通過tag name定位元素:driver.find_elements_by_tag_name('option')[1].click() # 通過xpath定位元素: driver.find_elements_by_xpath("//input[@type='checkbox']") # 通過css定位元素: driver.find_elements_by_css_selector('input[type=checkbox]') # 使用selector: slector=Select(driver.find_element_by_css_selector("[name='CookieDate']")) slector.select_by_index(1) # slector.select_by_visible_text("留一年") # slector.select_by_value("1")
18.多表單切換:switch_to.frame()
19.多窗口切換:switch_to.window()
當前句柄:current_window_handle
所有句柄:window_handles
20.警告框處理:switch_to_alert()
-
- text:返回所有alert/confirm/prompt中的文字信息
- accept():接受現有警告框
- dismiss():解散現有警告框
- send_keys(keysToSend):發送文本至警告框
21.文件上傳:send_keys()
driver.find_element_by_css_selector(".uploadpic").send_keys(r'E:\picture\s.png')
22.cookie處理:
- get_cookies():獲得所有cookie信息
- get_cookie(name):返回字典的key為“name”的cookie信息
- add_cookie(cookie_dict):添加cookie。“cookie_dict”指字典對象,必須有name和value值
- delete_cookie(name,optionsString):刪除cookie信息。“name”是要刪除的cookie的名稱,“optionsString”是該cookie的選項,目前支持的選項包括“路徑”,“域”
- delete_all_cookies():刪除所有cookie信息
23.滾動條設置(2種方式):
# 使用scrollTop滑動到底部 js = "var action=document.documentElement.scrollTop=10000" driver.execute_script(js) # 使用scrollTo設置位置 driver.set_window_size(600, 600) js = "window.scrollTo(100,450);" driver.execute_script(js)
24.窗口截圖:get_screenshot_as_file()
25.關閉窗口:close()
26.生成隨機數:radint()