Python+Selenium鍵盤鼠標(biāo)模擬事件操作詳解
當(dāng)我們定位到具體的一個(gè)元素的時(shí)候就可以對(duì)這個(gè)元素進(jìn)行具體的操作,比如之前章節(jié)所執(zhí)行的 click 操作。這是最簡(jiǎn)單的操作,webdriver 還有其他的操作。比如元素的基本操作(點(diǎn)擊、輸入、清除),還有一些高級(jí)操作如鼠標(biāo)鍵盤模擬事件、彈出框處理、多頁(yè)面切換等… 這些都是需要我們了解的內(nèi)容,也是在做自動(dòng)化測(cè)試的時(shí)候經(jīng)常遇到的一些基本場(chǎng)景。今天這一章節(jié),我們就先來學(xué)習(xí)一下元素的基本操作與鼠標(biāo)鍵盤模擬事件的操作吧。
元素的基本操作
利用我們之前使用的本地 form.html 文件,練習(xí)一下元素的基本點(diǎn)擊、輸入、清除操作。
代碼示例如下:
# coding:utf-8 from time import sleep from selenium import webdriver driver = webdriver.Chrome() # 啟動(dòng) Chrome瀏覽器的 driver driver.maximize_window() # Chrome 瀏覽器最大化 driver.get('file:///Users/workspace/WEB_TEST_HTML/form.html') # 打開本地的 "form.html" 文件 sleep(1) email_element = driver.find_element_by_xpath('//*[@id="inputEmail"]') # 通過 xpath 定位 Email 輸入框。 email_element.send_keys('username') # Email 輸入框輸入 "username" sleep(1) email_element.clear() # 清除 Email 輸入框內(nèi)容 sleep(1) email_element.send_keys('admin') # Email 輸入框輸入 "admin" driver.find_element_by_xpath('//*[@id="inputPassword"]').send_keys('123456') # Password 輸入框輸入 "123456" sleep(1) driver.find_element_by_xpath('/html/body/form/div[3]/div/button').click() # 通過 xpath 定位 "Sign in" 按鈕并點(diǎn)擊 driver.quit()
運(yùn)行結(jié)果如下:
以上就是屬于元素的基本操作,其實(shí)就是最簡(jiǎn)單最基本的操作,接下來我們繼續(xù)看看高一點(diǎn)難度的操作 ---> 鼠標(biāo)鍵盤模擬事件操作。
鼠標(biāo)鍵盤模擬事件操作
利用我們本地的 sendkeys.html 文件,實(shí)現(xiàn)鼠標(biāo)鍵盤的模擬事件操作。sendkeys.html 文件的頁(yè)面元素如下圖:
利用 Keys 模塊模擬鍵盤操作事件
ps:使用 Keys 模塊需要執(zhí)行導(dǎo)入操作: "from selenium.webdriver.common.keys import Keys"
鍵盤模擬事件代碼示例如下:
# coding:utf-8 from time import sleep from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() # 啟動(dòng) Chrome瀏覽器的 driver driver.maximize_window() # Chrome 瀏覽器最大化 driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html') # 打開本地的 "form.html" 文件 sleep(1) # 這里需要注意一下,因?yàn)槲沂褂玫氖?Mac ,所以鍵盤 ctrl 事件是 "Keys.COMMAND" ,如果是 Win 系統(tǒng)的話,ctrl 事件是 "Keys.CONTROL" driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'a')) # 通過 id 定位 "id = A" 的元素,執(zhí)行鍵盤事件 command + a driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'x')) # 通過 id 定位 "id = A" 的元素,執(zhí)行鍵盤事件 command + x sleep(1) driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'v')) # 通過 id 定位 "id = B" 的元素,執(zhí)行鍵盤事件 command + v sleep(1) driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'a')) # 通過 id 定位 "id = B" 的元素,執(zhí)行鍵盤事件 command + a sleep(1) driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'c')) # 通過 id 定位 "id = B" 的元素,執(zhí)行鍵盤事件 command + c sleep(1) driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'v')) # 通過 id 定位 "id = A" 的元素,執(zhí)行鍵盤事件 command + v sleep(1) driver.quit()
運(yùn)行結(jié)果如下:
利用 Action 類模擬鼠標(biāo)操作事件
PS:模擬鼠標(biāo)操作的場(chǎng)景并不是很多,了解即可。同時(shí) Action 類需要執(zhí)行 "from selenium.webdriver import ActionChains"
先來看一下,Action 類都支持哪些鼠標(biāo)的常用操作。
- key_down:模擬鼠標(biāo)按鍵按下
- key_up:模擬鼠標(biāo)按鍵彈起
- click:模擬鼠標(biāo)按鍵點(diǎn)擊(單擊)
- context_click:點(diǎn)擊鼠標(biāo)右鍵
- double_click:模擬鼠標(biāo)按鍵點(diǎn)擊(雙擊)
- send_keys:發(fā)送某個(gè)鍵到當(dāng)前焦點(diǎn)的元素
- click_and_hold:點(diǎn)擊鼠標(biāo)左鍵,不松開(拖拽)
- release:釋放、松開按住的鼠標(biāo)按鈕
- move_to:鼠標(biāo)移動(dòng)到…
- drag_and_drop:拖拽起來丟掉那里去…
- perform:無論做了什么操作,最后都需要 perform 去提交
PS:實(shí)際場(chǎng)景中不會(huì)是用很復(fù)雜的鼠標(biāo)操作事件來進(jìn)行 自動(dòng)化Case的編寫,所以我們演示的也是比較簡(jiǎn)單的場(chǎng)景。
模擬鼠標(biāo)事件 代碼示例如下:
# coding:utf-8 from time import sleep from selenium import webdriver from selenium.webdriver import ActionChains driver = webdriver.Chrome() # 啟動(dòng) Chrome瀏覽器的 driver driver.maximize_window() # Chrome 瀏覽器最大化 driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html') # 打開本地的 "form.html" 文件 sleep(1) # 這里需要注意一下,因?yàn)槲沂褂玫氖?Mac ,所以鍵盤 ctrl 事件是 "Keys.COMMAND" ,如果是 Win 系統(tǒng)的話,ctrl 事件是 "Keys.CONTROL" double_click_element = driver.find_element_by_id('A') # 通過 id 定位 "id = A" 的元素賦值給 double_click_element ActionChains(driver).double_click(double_click_element).context_click(double_click_element).perform() # 通過 ActionChains 類將 "driver" 轉(zhuǎn)換,先雙擊、然后執(zhí)行右擊操作【這種串聯(lián)起來的操作,叫做鏈?zhǔn)接梅?,可以根?jù)這個(gè)鏈一直往下寫】 sleep(2) ActionChains(driver).context_click(double_click_element).perform() # 通過 ActionChains 類將 "driver" 轉(zhuǎn)換,然后執(zhí)行右擊操作 sleep(2) driver.quit()
運(yùn)行結(jié)果如下:
以上就是使用 Action 類實(shí)現(xiàn)一些特殊場(chǎng)景的模擬,比較常用的就是 雙擊、右擊、拖拽 等場(chǎng)景使用的略多一些,其他的場(chǎng)景使用 Action 類就會(huì)特別少。
到此這篇關(guān)于Python+Selenium鍵盤鼠標(biāo)模擬事件操作詳解的文章就介紹到這了,更多相關(guān)Python Selenium鍵盤鼠標(biāo)事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python faker生成器生成虛擬數(shù)據(jù)代碼實(shí)例
這篇文章主要介紹了Python faker生成器生成虛擬數(shù)據(jù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07pytorch之pytorch?hook和關(guān)于pytorch?backward過程問題
這篇文章主要介紹了pytorch之pytorch?hook和關(guān)于pytorch?backward過程問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Python網(wǎng)絡(luò)爬蟲中的同步與異步示例詳解
這篇文章主要給大家介紹了關(guān)于Python網(wǎng)絡(luò)爬蟲中同步與異步的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02python寫一個(gè)隨機(jī)點(diǎn)名軟件的實(shí)例
今天小編就為大家分享一篇python寫一個(gè)隨機(jī)點(diǎn)名軟件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python getsizeof()和getsize()區(qū)分詳解
這篇文章主要介紹了Python getsizeof()和getsize()區(qū)分詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Python簡(jiǎn)直是萬能的,這5大主要用途你一定要知道?。ㄍ扑])
這篇文章主要介紹了Python主要用途,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04