Python Selenium keys快捷鍵和鍵盤操作

王平發表於2019-01-16

前面的演示程式我們都使用的是滑鼠操作,比如點選連結時,我們使用的是click()方法,可以模擬滑鼠點選,那麼在Python Selenium中怎麼操作鍵盤呢?比如回車,CTRL+TAB這類鍵盤事件呢?這篇就是聊下怎麼操作keys。

python selenium鍵盤操作

特殊按鍵和快捷鍵

鍵盤上有些特殊按鍵,比如CTRL鍵,SHIFT鍵;還有一些操作瀏覽器的快捷鍵,典型的就是使用CTRL+組合鍵。
這些鍵的使用都在selenium.webdriver.common.keys裡
要操作按鍵的時候要imprt一下。下面程式就來演示一下,還是老規矩程式在py3.6測試通過:

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

#開啟Chrome瀏覽器
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
#瀏覽器最大化
driver.maximize_window()
#開啟猿人學首頁
driver.get('https://www.yuanrenxue.com')

#定位頁面右上角的搜尋圖示並點選
try:
    element = WebDriverWait(driver,10).until(
        EC.presence_of_element_located((By.CLASS_NAME, "search-show"))
        )
    element.click()
except Exception:
    print('not locate search-show')
    driver.quit()
else:

    search = driver.find_element_by_class_name('search-input')
    search.send_keys(u'python教程')
    time.sleep(5)
    search.send_keys(Keys.RETURN)

    time.sleep(5)
    element = driver.find_element_by_tag_name('body')
    element.send_keys(Keys.DOWN)
    element.send_keys(Keys.DOWN)
    time.sleep(5)
    driver.quit()

還是拿猿人學網站舉例,這是之前那篇selenium演示程式的程式碼,我們把wait改成顯示等待了。有些地方加了sleep的原因是讓操作步驟看得更清楚。

程式功能是點選網站右上角的搜尋圖示,在搜尋框裡輸入Python教程並且按Enter鍵。然後鍵盤點選向下按鍵兩次。
輸入按鍵是使用send_keys()方法。
Enter鍵是Keys.RETURN,K是大寫。我們在檔案頭已經import Keys。
其他的特殊按鍵還有:
Keys.TAB
tab鍵
Keys.SHIFT
shift鍵
Keys.CONTROL
CTRL鍵
Keys.ALT
Keys.SPACE
Keys.PAGE_UP
Keys.PAGE_DOWN
Keys.UP
Keys.DOWN
Keys.LEFT
Keys.RIGHT
Keys.F1
Keys.F5
Keys.F12
Keys.COMMAND
見名知意,挺簡單的,上面只列舉一部分按鈕的寫法,要看全部的請看你selenium安裝路徑的裡的
C:\Python37\Lib\site-packages\selenium\webdriver\common
keys.py檔案。這個路徑是我的安裝路徑。

PS:看上面的向下按鍵是作用在body元素上的,動作要作用在正確的元素上,不然程式會報錯,比如把向下按鍵作用在上面程式的input框上就會報錯,因為input框又沒法向下移動。比如向下,向上,CTRL+組合按鍵等等一般都作用在body元素上。

組合鍵的使用

上面舉例了怎麼操作鍵盤,只舉例了單個按鍵的使用,還有經常使用CTRL+組合鍵的情況。再看演示程式,一看就明白。

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time


#開啟Chrome瀏覽器
driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")
#瀏覽器最大化
driver.maximize_window()
#開啟猿人學首頁
driver.get('https://www.yuanrenxue.com')
time.sleep(5)
element = driver.find_element_by_tag_name('body')
element.send_keys(Keys.CONTROL,'a')
element.send_keys(Keys.CONTROL,Keys.F4)

上面是開啟猿人學網站後使用ctrl+a全選,然後ctrl+f4關閉當前tab。

鍵入字串

還有在輸入框中輸入字串的情況,其實之前和上面的例子已經有了,還是使用send_keys()方法,引數傳入字串就好了,另外記住一點就是字串要是unicode碼的。

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章