首頁  >  文章  >  後端開發  >  Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件

Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件

WBOY
WBOY轉載
2022-06-10 18:09:272742瀏覽

這篇文章為大家帶來了關於python的相關知識,其中主要介紹了關於selenium的基本元素與鍵盤滑鼠模擬事件的相關問題,包括了利用Keys 模組模擬鍵盤操作事件、用Action 類別模擬滑鼠操作事件等,下面一起來看一下,希望對大家有幫助。

Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件

推薦學習:python影片教學

#當我們定位到具體的一個元素的時候就可以對這個元素進行具體的操作,例如之前章節所執行的click 操作。這是最簡單的操作,webdriver 還有其他的操作。例如元素的基本操作(點擊、輸入、清除),還有一些進階操作如滑鼠鍵盤模擬事件、彈出框處理、多頁面切換等… 這些都是需要我們了解的內容,也是在做自動化測試的時候常常遇到的一些基本場景。今天這一章節,我們就先來學習一下元素的基本操作與滑鼠鍵盤模擬事件的操作吧。

元素的基本操作

利用我們之前使用的本地 form.html 文件,練習一下元素的基本點擊、輸入、清除操作。

程式碼範例如下:

# 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 输入框内容
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()

運行結果如下:


Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件


以上就是屬於元素的基本操作,其實就是最簡單最基本的操作,接下來我們繼續看看高一點難度的操作---> 滑鼠鍵盤模擬事件操作。

滑鼠鍵盤模擬事件操作

利用我們本地的 sendkeys.html 文件,實現滑鼠鍵盤的模擬事件操作。 sendkeys.html 檔案的頁面元素如下圖:


Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件


#利用Keys 模組模擬鍵盤操作事件

ps:使用Keys 模組需要執行導入操作: "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 系统的话,ctrl 事件是 "Keys.CONTROL"
driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'a'))       # 通过 id 定位 "id = A" 的元素,执行键盘事件 command + a
driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'x'))       # 通过 id 定位 "id = A" 的元素,执行键盘事件 command + x
sleep(1)
driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'v'))       # 通过 id 定位 "id = B" 的元素,执行键盘事件 command + v
sleep(1)
driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'a'))       # 通过 id 定位 "id = B" 的元素,执行键盘事件 command + a
sleep(1)
driver.find_element_by_id('B').send_keys((Keys.COMMAND, 'c'))       # 通过 id 定位 "id = B" 的元素,执行键盘事件 command + c
sleep(1)
driver.find_element_by_id('A').send_keys((Keys.COMMAND, 'v'))       # 通过 id 定位 "id = A" 的元素,执行键盘事件 command + v
sleep(1)

driver.quit()

運行結果如下:


Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件


利用Action 類別模擬滑鼠操作事件

PS:模擬滑鼠操作的場景並不是很多,了解即可。同時 Action 類別需要執行 "from selenium.webdriver import ActionChains"

先來看一下,Action 類別都支援哪些滑鼠的常用操作。

  • key_down:模擬滑鼠按鍵按下
  • key_up:模擬滑鼠按鍵彈起
  • click:模擬滑鼠按鍵點選(點選)
  • context_click:點選滑鼠右鍵
  • double_click:模擬滑鼠按鍵點選(雙擊)
  • send_keys:傳送某個鍵到目前焦點的元素
  • click_and_hold:點擊滑鼠左鍵,不放開(拖曳)
  • release:釋放、放開按住的滑鼠按鈕
  • move_to:滑鼠移動到…
  • drag_and_drop:拖曳起來丟掉那裡去…
  • perform:無論做了什麼操作,最後都需要perform 去提交

PS:實際場景中不會是用很複雜的滑鼠操作事件來進行自動化Case的寫,所以我們示範的也是比較簡單的場景。

模擬滑鼠事件 程式碼範例如下:

# 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 系统的话,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" 转换,先双击、然后执行右击操作【这种串联起来的操作,叫做链式用法,可以根据这个链一直往下写】
sleep(2)

ActionChains(driver).context_click(double_click_element).perform()
# 通过 ActionChains 类将 "driver" 转换,然后执行右击操作
sleep(2)

driver.quit()

執行結果如下:


Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件

以上就是使用Action 類別實現一些特殊場景的模擬,比較常用的就是雙擊、右鍵、拖曳 等場景使用的略多一些,其他的場景使用Action 類別就會特別少。

推薦學習:python影片教學

#

以上是Python實戰解析selenium的基本元素與鍵盤滑鼠模擬事件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除