曲鳥全棧UI自動化教學(xué)(五):Selenium的鍵盤鼠標(biāo)事件詳解

      網(wǎng)友投稿 1057 2025-03-31

      一、前言


      在之前的教學(xué)中對于頁面的操作只涉及到了兩個(gè):點(diǎn)擊、輸入;其實(shí)Selenium的鍵盤鼠標(biāo)操作還有很多,現(xiàn)在就為你一一講解。

      二、鍵盤事件

      1. 輸入指定內(nèi)容【send_keys】

      1.1 我們可以使用send_keys來輸入我們想要輸入的內(nèi)容

      例如打開百度,搜索框輸入:曲鳥 csdn:

      import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() # 啟動chrome瀏覽器 driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 # 在輸入框輸入:曲鳥 csdn driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鳥 csdn')

      1.2 也可以指定按鍵輸入

      例如我們打開百度輸入:csdn 曲鳥,并粘貼復(fù)制它三次

      import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys driver = webdriver.Chrome() # 啟動chrome瀏覽器 driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 # 在輸入框輸入:曲鳥 csdn driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('曲鳥 csdn') # 按下crtl+A 全選 driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'a') # 按下crtl+C 復(fù)制 driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'c') # 按下crtl+V 粘貼 for i in range(3): time.sleep(0.5) driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')

      執(zhí)行效果

      1.3 組合按鍵規(guī)則

      send_keys支持按鍵的組合傳遞,例如上述的粘貼【Ctrl+V】操作,代碼實(shí)現(xiàn)為:

      driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL, 'v')

      另外,通過+號做連接組合按鍵也是可行的

      driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys(Keys.CONTROL+'c')

      如果想同時(shí)按下三個(gè)或更多按鍵鍵,則在括號中使用,或+號追加參數(shù)即可,例如在輸入框同時(shí)輸入a、b、c:

      driver.find_element(By.XPATH, '//*[@id="kw"]').send_keys('a', 'b','c')

      另外,我們可以通過【Ctrl+鼠標(biāo)左鍵】代碼中的Keys,查看支持哪些按鍵及調(diào)用代碼

      2. 模擬按下/彈起【key_down/key_up】

      Webdriver還提供了模擬鍵盤按下/彈起的操作,例如上述的復(fù)制操作可以改寫為下面的代碼

      driver.find_element(By.XPATH, '//*[@id="kw"]') webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()

      實(shí)際該方法不常用,使用第一種方法實(shí)現(xiàn)來說更簡單。

      3. 清空輸入【clear】

      clear方法可以清楚輸入框中的內(nèi)容,例如下面的代碼,會先打開百度,搜索框輸入:曲鳥 csdn,然后調(diào)用clear方法進(jìn)行清空

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 # 在輸入框輸入:曲鳥 csdn driver = driver.find_element(By.XPATH, '//*[@id="kw"]') driver.send_keys('曲鳥 csdn') driver.clear()

      三、鼠標(biāo)事件

      1. 點(diǎn)擊【click】

      通過click方法能夠?qū)撁嬷锌牲c(diǎn)擊元素進(jìn)行點(diǎn)擊操作,例如下面的代碼會對百度的【百度一下】按鈕進(jìn)行點(diǎn)擊

      from selenium import webdriver from selenium.webdriver.common.by import By driver= webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 # 點(diǎn)擊百度一下 driver.find_element(By.XPATH,'//*[@id="su"]').click()

      2. 單擊并按住【click_and_hold】

      下面的代碼會將button這個(gè)元素單擊并按住

      曲鳥全棧UI自動化教學(xué)(五):Selenium的鍵盤鼠標(biāo)事件詳解

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]') webdriver.ActionChains(driver).click_and_hold(button).perform()

      3. 右鍵單擊【context_click】

      下面的代碼會將button這個(gè)元素單擊并按住

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]').click() webdriver.ActionChains(driver).context_click(button).perform()

      4. 移動到元素(懸浮)【move_to_element】

      下面的代碼會將鼠標(biāo)移動到button這個(gè)元素上

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]') webdriver.ActionChains(driver).move_to_element(button).perform()

      5. 偏移移動【move_by_offset】

      此方法將鼠標(biāo)從其當(dāng)前位置(或 0,0)移動給定的偏移量。如果坐標(biāo)在視圖窗口之外,那么鼠標(biāo)將在瀏覽器窗口之外結(jié)束。

      下面的代碼會將以button這個(gè)元素為起點(diǎn),將鼠標(biāo)移動長為100,高為100的距離

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('https://www.baidu.com/') # 打開百度網(wǎng)址 button = driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[1]') xOffset = 100 yOffset = 100 webdriver.ActionChains(driver).move_by_offset(xOffset, yOffset).perform()

      6. 拖拽【drag_and_drop】

      此方法首先在源元素上執(zhí)行單擊并按住,移動到目標(biāo)元素的位置,然后釋放鼠標(biāo)。

      下面的代碼會單擊按住sourceEle元素,然后拖拽到targetEle上,然后釋放鼠標(biāo)

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://crossbrowsertesting.github.io/drag-and-drop") sourceEle = driver.find_element(By.ID, "draggable") targetEle = driver.find_element(By.ID, "droppable") webdriver.ActionChains(driver).drag_and_drop(sourceEle,targetEle).perform()

      7. 偏移拖拽【drag_and_drop_by_offset】

      此方法首先在源元素上執(zhí)行單擊并按住,移動到給定的偏移量,然后釋放鼠標(biāo)。

      下面的代碼會單擊按住sourceEle元素,將鼠標(biāo)移動長為100,高為100的距離,然后釋放鼠標(biāo)

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://crossbrowsertesting.github.io/drag-and-drop") sourceEle = driver.find_element(By.ID, "draggable") XOffset = 100 YOffset = 100 webdriver.ActionChains(driver).drag_and_drop_by_offset(sourceEle, XOffset, YOffset).perform()

      8. 釋放鼠標(biāo)【release】

      此動作釋放按下的鼠標(biāo)左鍵。如果傳遞了 WebElement,它將在給定的 WebElement 上釋放按下的鼠標(biāo)左鍵

      from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://crossbrowsertesting.github.io/drag-and-drop") sourceEle = driver.find_element(By.ID, "draggable") targetEle = driver.find_element(By.ID, "droppable") webdriver.ActionChains(driver).click_and_hold(sourceEle).move_to_element(targetEle).perform() webdriver.ActionChains(driver).release().perform()

      Python Selenium 自動化測試

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:朋友,這些問題就別再用IF函數(shù)了……
      下一篇:如何自動填充日期(自動填充可以按日期自動填充)
      相關(guān)文章
      337p日本欧洲亚洲大胆裸体艺术 | 亚洲AV日韩综合一区| 亚洲精品熟女国产| 久久久久久a亚洲欧洲AV| 日韩va亚洲va欧洲va国产| 亚洲精品无码久久久影院相关影片| 亚洲一级特黄大片在线观看| 亚洲第一成人影院| 亚洲国产精品成人久久蜜臀 | 亚洲色大成网站www久久九| 午夜在线a亚洲v天堂网2019| 亚洲最大成人网色香蕉| 亚洲a级在线观看| 久久精品国产亚洲AV蜜臀色欲| 亚洲人成毛片线播放| 亚洲一欧洲中文字幕在线| 亚洲一级片在线观看| 久久亚洲最大成人网4438| 久久精品国产亚洲αv忘忧草| 亚洲已满18点击进入在线观看| 亚洲粉嫩美白在线| 亚洲精品中文字幕无码A片老| 亚洲国产高清国产拍精品| 国产亚洲欧美在线观看| 亚洲成av人在片观看| 久久亚洲中文字幕精品一区四| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲av综合av一区二区三区| 激情小说亚洲色图| 亚洲免费视频一区二区三区| 久久精品国产亚洲精品| 亚洲大尺度无码无码专区| 亚洲综合在线视频| 亚洲校园春色另类激情| 亚洲国产成人久久综合| 亚洲国产成人五月综合网| 亚洲中文久久精品无码| 久久久久无码精品亚洲日韩| 亚洲精品美女久久久久| 香蕉大伊亚洲人在线观看| 亚洲AV伊人久久青青草原|