網(wǎng)站首頁 編程語言 正文
當(dāng)我們定位到具體的一個元素的時候就可以對這個元素進行具體的操作,比如之前章節(jié)所執(zhí)行的 click 操作。這是最簡單的操作,webdriver 還有其他的操作。比如元素的基本操作(點擊、輸入、清除),還有一些高級操作如鼠標(biāo)鍵盤模擬事件、彈出框處理、多頁面切換等… 這些都是需要我們了解的內(nèi)容,也是在做自動化測試的時候經(jīng)常遇到的一些基本場景。今天這一章節(jié),我們就先來學(xué)習(xí)一下元素的基本操作與鼠標(biāo)鍵盤模擬事件的操作吧。
元素的基本操作
利用我們之前使用的本地 form.html 文件,練習(xí)一下元素的基本點擊、輸入、清除操作。
代碼示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
driver = webdriver.Chrome() # 啟動 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" 按鈕并點擊
driver.quit()
運行結(jié)果如下:
以上就是屬于元素的基本操作,其實就是最簡單最基本的操作,接下來我們繼續(xù)看看高一點難度的操作 ---> 鼠標(biāo)鍵盤模擬事件操作。
鼠標(biāo)鍵盤模擬事件操作
利用我們本地的 sendkeys.html 文件,實現(xiàn)鼠標(biāo)鍵盤的模擬事件操作。sendkeys.html 文件的頁面元素如下圖:
利用 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() # 啟動 Chrome瀏覽器的 driver
driver.maximize_window() # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html') # 打開本地的 "form.html" 文件
sleep(1)
# 這里需要注意一下,因為我使用的是 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()
運行結(jié)果如下:
利用 Action 類模擬鼠標(biāo)操作事件
PS:模擬鼠標(biāo)操作的場景并不是很多,了解即可。同時 Action 類需要執(zhí)行 "from selenium.webdriver import ActionChains"
先來看一下,Action 類都支持哪些鼠標(biāo)的常用操作。
- key_down:模擬鼠標(biāo)按鍵按下
- key_up:模擬鼠標(biāo)按鍵彈起
- click:模擬鼠標(biāo)按鍵點擊(單擊)
- context_click:點擊鼠標(biāo)右鍵
- double_click:模擬鼠標(biāo)按鍵點擊(雙擊)
- send_keys:發(fā)送某個鍵到當(dāng)前焦點的元素
- click_and_hold:點擊鼠標(biāo)左鍵,不松開(拖拽)
- release:釋放、松開按住的鼠標(biāo)按鈕
- move_to:鼠標(biāo)移動到…
- drag_and_drop:拖拽起來丟掉那里去…
- perform:無論做了什么操作,最后都需要 perform 去提交
PS:實際場景中不會是用很復(fù)雜的鼠標(biāo)操作事件來進行 自動化Case的編寫,所以我們演示的也是比較簡單的場景。
模擬鼠標(biāo)事件 代碼示例如下:
# coding:utf-8
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome() # 啟動 Chrome瀏覽器的 driver
driver.maximize_window() # Chrome 瀏覽器最大化
driver.get('file:///Users/workspace/WEB_TEST_HTML/sendkeys.html') # 打開本地的 "form.html" 文件
sleep(1)
# 這里需要注意一下,因為我使用的是 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ù)這個鏈一直往下寫】
sleep(2)
ActionChains(driver).context_click(double_click_element).perform()
# 通過 ActionChains 類將 "driver" 轉(zhuǎn)換,然后執(zhí)行右擊操作
sleep(2)
driver.quit()
運行結(jié)果如下:
以上就是使用 Action 類實現(xiàn)一些特殊場景的模擬,比較常用的就是 雙擊、右擊、拖拽 等場景使用的略多一些,其他的場景使用 Action 類就會特別少。
原文鏈接:https://blog.csdn.net/weixin_42250835/article/details/125176219
相關(guān)推薦
- 2022-06-13 ASP.NET?Core?MVC路由(Routing)的用法_基礎(chǔ)應(yīng)用
- 2022-09-03 Golang棧結(jié)構(gòu)和后綴表達式實現(xiàn)計算器示例_Golang
- 2023-06-16 Pytorch中的?torch.distributions庫詳解_python
- 2023-01-26 Redis中的慢日志_Redis
- 2022-09-21 Python安裝和配置uWSGI的詳細過程_python
- 2022-08-14 Python?Selenium彈窗處理操作指南_python
- 2024-03-09 【Redis】什么是緩存雪崩,如何預(yù)防緩存雪崩?
- 2022-01-10 設(shè)置Radio不可點擊遇到的問題
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支