一、Selenium之鼠標(biāo)操作和鍵盤操作
1.鼠標(biāo)事件
在webdriver中,鼠標(biāo)操作的方法封裝在 ActionChains 類提供。ActionChains類提供了鼠標(biāo)操作的常用方法:
ActionChains(driver),將瀏覽器驅(qū)動 driver 作為參數(shù)傳入。
(1) perform(): 執(zhí)行所有 ActionChains 中存儲的行為,是對整個操作的提交動作;
(2) context_click(): 右擊
(3) double_click(): 雙擊
(4) drag_and_drop(): 拖動
(5) move_to_element(): 鼠標(biāo)懸停, 在調(diào)用時需要指定元素定位
具體代碼如下:
#!/usr/bin/env python # -*- encoding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
base_url = 'http://www.baidu.com/' browser = webdriver.Chrome('../tools/chromedriver.exe')
browser.get(base_url)
# 定位到懸停元素處
above = browser.find_element_by_link_text('設(shè)置')
# 對元素執(zhí)行鼠標(biāo)懸停操作
ActionChains(browser).move_to_element(above).perform()
time.sleep(5)
# 右擊
ActionChains(browser).context_click().perform()
time.sleep(5)
# 定位到要雙擊的元素處 # double_click_element = browser.find_element_by_link_text('新聞') # print(double_click_element) # ActionChains(browser).move_to_element(double_click_element).double_click().perform() # time.sleep(5)
# 拖動元素
drag_and_drop_element = browser.find_element_by_link_text('地圖')
ActionChains(browser).move_to_element(drag_and_drop_element).drag_and_drop().perform()
time.sleep(5)
browser.quit()
2.鍵盤事件
前面的 send_keys() 方法用來模擬鍵盤輸入;keys() 類提供了鍵盤上幾乎所有按鍵的方法,組合鍵也是可以的。
常用的鍵盤操作如下:
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') 復(fù)制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘貼(Ctrl+V)
send_keys(Keys.F1) 鍵盤 F1
……
send_keys(Keys.F12) 鍵盤 F12
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
base_url = 'https://www.baidu.com/'
driver = webdriver.Chrome('../tools/chromedriver.exe')
driver.get(base_url)
# 先輸入百度
driver.find_element_by_id('kw').send_keys('百度')
# 1.刪除度
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
time.sleep(3)
# 2.鍵入空格
driver.find_element_by_id('kw').send_keys(Keys.SPACE)
driver.find_element_by_id('kw').send_keys('加入空格')
time.sleep(5)
# 3.ctrl+a 全選輸入框里的內(nèi)容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')
time.sleep(3)
# 4.ctrl+x 剪切輸入框里的內(nèi)容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'x')
time.sleep(3)
# 5. ctrl+v 粘貼剪切的內(nèi)容
driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v')
time.sleep(3)
# 6. 回車
driver.find_element_by_id('su').send_keys(Keys.ENTER)
time.sleep(3)
driver.quit()