Python使用selenium模擬鍵盤輸入的常見方法
我在使用selenium弄模擬登陸,需要模擬輸入賬號和密碼,往往都使用 selenium 的send_keys 函數。
可是我昨天在寫測試的時候,有時候有些網站,居然使用send_keys 函數,無法在輸入框里輸入文字!
在Python中,你可以使用多種方式來模擬鍵盤輸入。
以下是一些常見的方法:
1. 使用 selenium 的send_keys 函數
這是最基本的方法,適用于需要用戶手動輸入的情況,不涉及模擬鍵盤輸入。
user_input = wait.until(EC.presence_of_element_located((By.XPATH, "/html/"))) user_input.send_keys("密碼")
有時候,這個方法對一些網站無效,具體表現在,怎么定位輸入鍵的Xpath都沒有效果,無法定位位置,導致無法操作。
這樣的話,要么刷新網頁,要么使用后面的方法。
2. 使用 pyautogui 庫
在我使用 selenium
傳統的的send_keys
函數輸入值的方法,發(fā)現不太行后,使用js的方法也不行(最后那個方法)。
于是,嘗試了一下pyautogui
來,模擬鼠標和鍵盤操作。
在運行前,需要安裝 pyautogui
:
pip install pyautogui
要先找到目標輸入的位置:
sleep(6) #把鼠標放在目標獲取的位置,獲取位置信息 current_position = pyautogui.position() print(f"當前鼠標位置:X={current_position.x}, Y={current_position.y}")
然后,你可以使用它來模擬鍵盤輸入:
import pyautogui # 移動鼠標到一個文本框位置(這里以屏幕上的坐標為例) pyautogui.click(100, 100) #輸入上面返回的xy的位置信息 # 輸入文本 pyautogui.write('Hello, World!', interval=0.25)
如果是要模擬點擊enter鍵,則是
# 模擬按下 Enter 鍵 pyautogui.press('enter')
到這里就成功啦,只是pyautogui有個不太好的是,它會占用鼠標和鍵盤的使用,如果我們想要在一邊使用selenium運行的時候,也同時使用鍵盤和鼠標,就會影響或者中斷運行的程序,不太方便。
所以如果非必要情況,還是使用xpath/css定位法會更好
3. 使用 pynput 庫
pynput
是另一種可以用于模擬鍵盤和鼠標事件的庫。
首先,安裝 pynput
:
pip install pynput
使用 pynput
模擬鍵盤輸入:
from pynput.keyboard import Controller, Key keyboard = Controller() # 輸入文本 keyboard.type('Hello, World!', interval=0.25) # 按下回車鍵 keyboard.press(Key.enter) keyboard.release(Key.enter)
4. 使用js輸入的操作
jsStr = "var d = document.getElementsByClassName('user');d.value='世sdf 言';" driver.execute_script(jsStr)
但是個人覺得效果不佳hhh
到此這篇關于Python使用selenium模擬鍵盤輸入的常見方法的文章就介紹到這了,更多相關Python selenium鍵盤輸入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python中cv2.imdecode()與cv2.imencode()的使用小結
本文介紹了cv2.imencode()和cv2.imdecode()函數的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-01-01Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)
這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04