[python selenium] 操作方法整理


個人筆記,摘抄自蟲師python selenum,僅供個人參考

 

1、安裝:

pip install selenium

下載webdriver # webdriver 下載並放置在python主目錄



2、基本使用

from selenium import webdriver
browser = webdriver.Firefox()
browser = webdriver.Chrome()

browser.set_window_size(480, 800)  #參數數字為像素點
browser.maximize_window()  #將瀏覽器最大化顯示

browser.get(url)

browser.back()
browser.forward()

browser.close() # browser.quit() 

 

3、元素定位

# 單個元素
browser.find_element_by_id()
browser.find_element_by_name()
browser.find_element_by_tag_name()
browser.find_element_by_class_name()
browser.find_element_by_css_selector()
browser.find_element_by_xpath()

# 多個元素
browser.find_elements_by_[...]()

#層級定位
#點擊Link1鏈接(彈出下拉列表)
dr.find_element_by_link_text('Link1').click()

#找到id 為dropdown1的父元素
WebDriverWait(dr, 10).until(lambda the_driver: the_driver.find_element_by_id('dropdown1').is_displayed())
#在父親元件下找到link為Action的子元素
menu = dr.find_element_by_id('dropdown1').find_element_by_link_text('Action')

#鼠標定位到子元素上
webdriver.ActionChains(dr).move_to_element(menu).perform()

# 鼠標移到懸停元素上
 ActionChains(browser).move_to_element(ele).perform()

 

4、 操作對象、WebElement 常用方法,小結

操作對象:

  • · click 點擊對象
  • · send_keys 在對象上模擬按鍵輸入
  • · clear 清除對象的內容,如果可以的話

  WebElement  另一些常用方法:

  • · text  獲取該元素的文本
  • · submit  提交表單
  • · get_attribute  獲得屬性值

 

5、定位frame

多層框架或窗口的定位:

  • switch_to_frame()
  • switch_to_window()

智能等待:

  • implicitly_wait()

 

 6、使用selenium webdriver 調用js

調用js方法

  • execute_script(script, *args)

在當前窗口/框架 同步執行javaScript

腳本:JavaScript的執行。

*參數:適用任何JavaScript腳本。

使用:

driver.execute_script(‘document.title’)

 

7、selenium 對下拉框信息的定位,以及對警告提示框的處理

本節重點

  • 處理下拉框
  • switch_to_alert()  
  • accept()

8、通過js控制滾動條到窗口底部

js="var q=document.getElementById('id').scrollTop=10000"
driver.execute_script(js)

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

 

 

 9、模擬鍵盤按鍵操作

  • l 鍵盤按鍵用法
  • l 鍵盤組合鍵用法
  • l send_keys() 輸入中文運行報錯問題
from selenium.webdriver.common.keys import Keys  #需要引入keys包

driver.find_element_by_id("user_name").send_keys(Keys.TAB)
driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')

send_keys(u"輸入中文")
module:selenium.webdriver.common.keys
• class Keys()
– NULL = u’ue000’
– CANCEL = u’ue001’ # ^break
– HELP = u’ue002’
– BACK_SPACE = u’ue003’
– TAB = u’ue004’
– CLEAR = u’ue005’
– RETURN = u’ue006’
– ENTER = u’ue007’
– SHIFT = u’ue008’
– LEFT_SHIFT = u’ue008’ # alias
– CONTROL = u’ue009’
– LEFT_CONTROL = u’ue009’ # alias
– ALT = u’ue00a’
– LEFT_ALT = u’ue00a’ # alias
– PAUSE = u’ue00b’
– ESCAPE = u’ue00c’
– SPACE = u’ue00d’
– PAGE_UP = u’ue00e’
– PAGE_DOWN = u’ue00f’
– END = u’ue010’
– HOME = u’ue011’
– LEFT = u’ue012’
– ARROW_LEFT = u’ue012’ # alias
– UP = u’ue013’
– ARROW_UP = u’ue013’ # alias
– RIGHT = u’ue014’
– ARROW_RIGHT = u’ue014’ # alias
– DOWN = u’ue015’
– ARROW_DOWN = u’ue015’ # alias
– INSERT = u’ue016’
– DELETE = u’ue017’
– SEMICOLON = u’ue018’
– EQUALS = u’ue019’
– NUMPAD0 = u’ue01a’ # numbe pad keys
– NUMPAD1 = u’ue01b’
– NUMPAD2 = u’ue01c’
– NUMPAD3 = u’ue01d’
– NUMPAD4 = u’ue01e’
– NUMPAD5 = u’ue01f’
– NUMPAD6 = u’ue020’
– NUMPAD7 = u’ue021’
– NUMPAD8 = u’ue022’
– NUMPAD9 = u’ue023’
– MULTIPLY = u’ue024’
– ADD = u’ue025’
– SEPARATOR = u’ue026’
– SUBTRACT = u’ue027’
– DECIMAL = u’ue028’
– DIVIDE = u’ue029’
– F1 = u’ue031’ # function keys
– F2 = u’ue032’
– F3 = u’ue033’
– F4 = u’ue034’
– F5 = u’ue035’
– F6 = u’ue036’
– F7 = u’ue037’
– F8 = u’ue038’
– F9 = u’ue039’
– F10 = u’ue03a’
– F11 = u’ue03b’
– F12 = u’ue03c’
– META = u’ue03d’
– COMMAND = u’ue03d’
鍵盤模擬

 

 

 10、通過webdirver 操作cookie

  • driver.get_cookies() 獲得cookie信息
  • add_cookie(cookie_dict)  向cookie添加會話信息
  • delete_cookie(name)   刪除特定(部分)的cookie
  • delete_all_cookies()    刪除所有cookie

 

 11、selenium webdriver 鼠標事件的用法

ActionChains 類

  •   context_click()  右擊
  •   double_click()   雙擊
  •   drag_and_drop()  拖動
from selenium.webdriver.common.action_chains import ActionChains

#定位到要雙擊的元素
qqq =driver.find_element_by_xpath("xxx")
#對定位到的元素執行鼠標雙擊操作
ActionChains(driver).double_click(qqq).perform()

#定位元素的原位置
element = driver.find_element_by_name("source")
#定位元素要移動到的目標位置
target =  driver.find_element_by_name("target")

#執行元素的移動操作
ActionChains(driver).drag_and_drop(element, target).perform()


免責聲明!

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



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