Python+Selenium(webdriver常用API)


總結了Python+selenium常用的一些方法函數,以后有新增再隨時更新:

  1. 加載瀏覽器驅動: webdriver.Firefox()

  2. 打開頁面:get()

  3. 關閉瀏覽器:quit()

  4. 最大化窗口: maximize_window()

  5. 設置窗口參數:set_window_size(600,800)

  6. 后退到前一頁: back()

  7. 前進到后一頁: forward()

  8. 刷新頁面: refresh()

  9. 獲得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
  10. 元素定位:

    • 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定位:
    1. 絕對路徑:find_element_by_xpath("絕對路徑")
    2. 元素屬性:find_element_by_xpath("//unput[@id='kw']")
    3. 層級與屬性結合:find_element_by_xpath("//form[@id='loginForm']/ul/input[1]")
    4. 邏輯運算符: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()


免責聲明!

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



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