Python使用selenium模擬鍵盤(pán)輸入的常見(jiàn)方法
我在使用selenium弄模擬登陸,需要模擬輸入賬號(hào)和密碼,往往都使用 selenium 的send_keys 函數(shù)。
可是我昨天在寫(xiě)測(cè)試的時(shí)候,有時(shí)候有些網(wǎng)站,居然使用send_keys 函數(shù),無(wú)法在輸入框里輸入文字!
在Python中,你可以使用多種方式來(lái)模擬鍵盤(pán)輸入。
以下是一些常見(jiàn)的方法:
1. 使用 selenium 的send_keys 函數(shù)
這是最基本的方法,適用于需要用戶(hù)手動(dòng)輸入的情況,不涉及模擬鍵盤(pán)輸入。
user_input = wait.until(EC.presence_of_element_located((By.XPATH, "/html/")))
user_input.send_keys("密碼")
有時(shí)候,這個(gè)方法對(duì)一些網(wǎng)站無(wú)效,具體表現(xiàn)在,怎么定位輸入鍵的Xpath都沒(méi)有效果,無(wú)法定位位置,導(dǎo)致無(wú)法操作。
這樣的話,要么刷新網(wǎng)頁(yè),要么使用后面的方法。
2. 使用 pyautogui 庫(kù)
在我使用 selenium 傳統(tǒng)的的send_keys 函數(shù)輸入值的方法,發(fā)現(xiàn)不太行后,使用js的方法也不行(最后那個(gè)方法)。
于是,嘗試了一下pyautogui來(lái),模擬鼠標(biāo)和鍵盤(pán)操作。
在運(yùn)行前,需要安裝 pyautogui:
pip install pyautogui
要先找到目標(biāo)輸入的位置:
sleep(6) #把鼠標(biāo)放在目標(biāo)獲取的位置,獲取位置信息
current_position = pyautogui.position()
print(f"當(dāng)前鼠標(biāo)位置:X={current_position.x}, Y={current_position.y}")

然后,你可以使用它來(lái)模擬鍵盤(pán)輸入:
import pyautogui
# 移動(dòng)鼠標(biāo)到一個(gè)文本框位置(這里以屏幕上的坐標(biāo)為例)
pyautogui.click(100, 100) #輸入上面返回的xy的位置信息
# 輸入文本
pyautogui.write('Hello, World!', interval=0.25)
如果是要模擬點(diǎn)擊enter鍵,則是
# 模擬按下 Enter 鍵
pyautogui.press('enter')
到這里就成功啦,只是pyautogui有個(gè)不太好的是,它會(huì)占用鼠標(biāo)和鍵盤(pán)的使用,如果我們想要在一邊使用selenium運(yùn)行的時(shí)候,也同時(shí)使用鍵盤(pán)和鼠標(biāo),就會(huì)影響或者中斷運(yùn)行的程序,不太方便。
所以如果非必要情況,還是使用xpath/css定位法會(huì)更好
3. 使用 pynput 庫(kù)
pynput 是另一種可以用于模擬鍵盤(pán)和鼠標(biāo)事件的庫(kù)。
首先,安裝 pynput:
pip install pynput
使用 pynput 模擬鍵盤(pán)輸入:
from pynput.keyboard import Controller, Key
keyboard = Controller()
# 輸入文本
keyboard.type('Hello, World!', interval=0.25)
# 按下回車(chē)鍵
keyboard.press(Key.enter)
keyboard.release(Key.enter)
4. 使用js輸入的操作
jsStr = "var d = document.getElementsByClassName('user');d.value='世sdf 言';"
driver.execute_script(jsStr)
但是個(gè)人覺(jué)得效果不佳hhh
到此這篇關(guān)于Python使用selenium模擬鍵盤(pán)輸入的常見(jiàn)方法的文章就介紹到這了,更多相關(guān)Python selenium鍵盤(pán)輸入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python PaddleSpeech實(shí)現(xiàn)語(yǔ)音文字處理
PaddleSpeech基于飛槳PaddlePaddle的語(yǔ)音方向的開(kāi)源模型庫(kù),用于語(yǔ)音和音頻中的各種關(guān)鍵任務(wù)的開(kāi)發(fā),包含大量基于深度學(xué)習(xí)前沿和有影響力的模型。本文將介紹如何通過(guò)PaddleSpeech實(shí)現(xiàn)語(yǔ)音文字處理,感興趣的可以學(xué)習(xí)一下2022-01-01
利用Python實(shí)現(xiàn)微信找房機(jī)器人實(shí)例教程
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)微信找房機(jī)器人的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python中cv2.imdecode()與cv2.imencode()的使用小結(jié)
本文介紹了cv2.imencode()和cv2.imdecode()函數(shù)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
python面向?qū)ο蟀鎸W(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python面向?qū)ο蟀鎸W(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Python編程求質(zhì)數(shù)實(shí)例代碼
這篇文章主要介紹了Python編程求質(zhì)數(shù)實(shí)例代碼,對(duì)求200,1000和100000以?xún)?nèi)的質(zhì)數(shù)進(jìn)行了測(cè)試,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)
這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)代碼示例解析
這篇文章主要介紹了Python數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

