1、鼠標操作事件
很多時候我們在操作瀏覽器的過程中會遇到要做一些鼠標和鍵盤事件,例如:鼠標懸浮打開窗口、鼠標雙擊、鼠標右鍵單擊、鍵盤回車鍵、組合鍵等操作
鼠標的操作方式都包含在ActionChains類提供的鼠標操作事件中,代碼如下:
#將鼠標懸停在某個標簽上
webdriver.ActionChains(driver).move_to_element("鼠標懸停在某個標簽上").perform()
#雙擊方法
webdriver.ActionChains(driver).double_click("需要雙擊的元素").perform()
#點擊鼠標右鍵
webdriver.ActionChains(driver).context_click("需要點擊鼠標右鍵的元素").perform()
#拖動鼠標
webdriver.ActionChains(driver).drag_and_drop("需要拖動鼠標的元素").perform()
例如,在百度搜索界面需要將鼠標懸停在“設置”欄位上才能展開有關“設置”選項的詳細內容,如下圖:
進入“設置”並點擊“高級搜索”的操作代碼如下:
#codibg:utf-8
from selenium import webdriver import time#調用火狐瀏覽器驅動
driver = webdriver.Firefox() #進入百度搜索頁面
driver.get("https://www.baidu.com") #添加等待時間,當前等待時間為3s
time.sleep(3) #找到頁面中為“設置”的text
settings = driver.find_element_by_link_text("設置") #將鼠標懸停在“設置”按鈕上,使設置界面展開
webdriver.ActionChains(driver).move_to_element(settings).perform() time.sleep(1) #點擊“搜索設置”按鈕
driver.find_element_by_class_name("setpref").click() #點擊“保存設置”按鈕
driver.find_element_by_class_name("prefpanelgo").click() #獲取alert對話框
alert = driver.switch_to_alert() #添加等待時間
time.sleep(2) #打印彈出框信息
print(alert.text) #點擊彈出框中確定按鈕
alert.accept() time.sleep(3) #關閉當前頁面
driver.close()
2、鍵盤事件
Keys類中提供了幾乎所有的鍵盤事件,在鼠標事件中用到了兩個鍵盤事件,鍵盤的向下按鍵(send_keys(Keys.DOWN))和鍵盤的回車事件(send_keys(Keys.ENTER))。鍵盤的事件需要導入Keys模塊。
from selenium.webdriver.common.keys import Keys
所有的鍵盤事件都包含在這個模塊中,send_keys用來模擬鍵盤輸入,除此之外,還可以用例模擬鍵盤上的按鍵,不僅支持單個的鍵盤按鍵,還支持組合按鍵輸入。
#codibg:utf-8
from selenium import webdriver import time from selenium.webdriver.common.keys import Keys #調用火狐瀏覽器驅動
driver = webdriver.Firefox() #啟動瀏覽器並打開百度頁面
driver.get("https://www.baidu.com") #設置當前等待時間為3s
time.sleep(3) driver.find_element_by_id("kw").send_keys("selenium")#在搜索框中搜索selenium
time.sleep(2) driver.find_element_by_id('kw').send_keys(Keys.SPACE)#輸入空格鍵
time.sleep(2) driver.find_element_by_id("kw").send_keys('python')#在搜索框中輸入python
time.sleep(2) driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')#輸入Ctrl+a全選
time.sleep(2) driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')#輸入Ctrl+c復制
time.sleep(2) driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')#輸入Ctrl+v粘貼
time.sleep(2) driver.find_element_by_id("kw").send_keys(Keys.ENTER)#輸入回車鍵 #關閉當前頁面
driver.close()
下面是一些常用的鍵盤事件:
– Keys.BACK_SPACE:回退鍵(BackSpace)
– Keys.TAB:制表鍵(Tab)
– Keys.ENTER:回車鍵(Enter)
– Keys.SHIFT:大小寫轉換鍵(Shift)
– Keys.CONTROL:Control鍵(Ctrl)
– Keys.ALT:ALT鍵(Alt)
– Keys.ESCAPE:返回鍵(Esc)
– Keys.SPACE:空格鍵(Space)
– Keys.PAGE_UP:翻頁鍵上(Page Up)
– Keys.PAGE_DOWN:翻頁鍵下(Page Down)
– Keys.END:行尾鍵(End)
– Keys.HOME:行首鍵(Home)
– Keys.LEFT:方向鍵左(Left)
– Keys.UP:方向鍵上(Up)
– Keys.RIGHT:方向鍵右(Right)
– Keys.DOWN:方向鍵下(Down)
– Keys.INSERT:插入鍵(Insert)
– DELETE:刪除鍵(Delete)
– NUMPAD0 ~ NUMPAD9:數字鍵1-9
– F1 ~ F12:F1 - F12鍵
– (Keys.CONTROL, ‘a’):組合鍵Control+a,全選
– (Keys.CONTROL, ‘c’):組合鍵Control+c,復制
– (Keys.CONTROL, ‘x’):組合鍵Control+x,剪切
– (Keys.CONTROL, ‘v’):組合鍵Control+v,粘貼