Selenium系列(四) – 鼠標、鍵盤操作詳細解讀

  • 2020 年 3 月 28 日
  • 筆記

如果你還想從頭學起Selenium,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1680176.html

 

其次,如果你不懂前端基礎知識,需要自己去補充哦,博主暫時沒有總結(雖然我也會,所以我學selenium就不用複習前端了哈哈哈…)

 

引入HTML頁面

<!DOCTYPE html>  <html lang="en">  <head>      <meta charset="UTF-8">      <title>小菠蘿測試筆記</title>  </head>  <body>    <a>用戶名:</a>  <input id="username" class="username">  <a>密碼</a>  <input id="password" name="password">  <button class="login">登錄</button>  <br>  <p>測試啦</p>  <p>再一次測試啦</p>  <br>  <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0"     class="mnav sp dot">終極抗擊肺炎啊</a>  <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-2020"     class="mnav sp dot">抗擊肺炎</a>  <a href="https://voice.baidu.com/act/newpneumonia/newpneumonia/?from=osari_pc_1" target="_blank" id="virus-202s0"     class="mnav sp dot">抗擊肺炎</a>    <div>      <ul>          <li class="li">111</li>          <li class="li">222</li>          <li class="li">333</li>      </ul>      <ul>          <li>aaa</li>          <li>bbb</li>          <li>ccc</li>      </ul>  </div>  </body>  </html>

 

背景

用selenium做自動化,有時候會遇到需要模擬鼠標操作才能進行的情況,比如單擊、雙擊、點擊鼠標右鍵、拖拽等等。

而selenium給我們提供了一個類來處理這類事件—— ActionChains 

 

有哪些鼠標操作呢?

  • 執行操作
  • 左鍵、右鍵單擊、雙擊
  • 鼠標懸停到元素、偏移處
  • 長按
  • 拖動

點擊右邊目錄即可跳轉哦! ————–>>>>>>>>>> 

 

執行操作

perform() 方法

主要是調用其他操作方法後,都要再次調用這個方法,表示執行某個鼠標操作,後面會有例子

 

左鍵、右鍵單擊、雙擊

from selenium.webdriver import ActionChains  from selenium import webdriver    driver = webdriver.Chrome("../resources/chromedriver.exe")    # 創建實例  chains = ActionChains(driver)    # 訪問網址  driver.get("file:///C:/test.html")    # 登錄按鈕  username = driver.find_element_by_id("username")  login_btn = driver.find_element_by_class_name("login")  password = driver.find_element_by_id("password")    # 左鍵點擊  chains.click(username).perform()    # 右鍵點擊  chains.context_click(username).perform()    # 雙擊  chains.double_click(password).perform()

 

鼠標懸停到元素、偏移處

# 懸停到設置按鈕  chains.move_to_element(login_btn).perform()    # 懸停到指定偏移量  chains.move_to_element_with_offset(login_btn, 2, 2).perform()

知識點

move_to_element_with_offset() 是先找到元素,再根據元素位置偏移指定偏移量

 

長按

# 長按  chains.click_and_hold(login_btn).perform()

 

拖動

# 拖動1  chains.drag_and_drop(source=username, target=password)    # 拖動2  chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)

知識點

  • drag_and_drop 將源元素拖動到目標元素處
  • drag_and_drop_by_offset 將源元素拖動指定偏移量

 

有什麼鍵盤操作?

  • 刪除鍵
  • 空格鍵
  • 製表鍵
  • 回退鍵
  • 回車鍵
  • 全選
  • 複製
  • 剪切
  • 粘貼
  • F1-F12
  • ……其實就是所有鍵盤都能模擬,包括alt、shift、insert、delete、home等等等…這裡就不舉例了,看源碼很容易懂

 

#!/usr/bin/env python  # -*- coding: utf-8 -*-    """  __title__  =  __Time__   = 2020/3/27 20:33  __Author__ = 小菠蘿測試筆記  __Blog__   = https://www.cnblogs.com/poloyy/  """  from time import sleep    from selenium import webdriver  from selenium.webdriver.common.keys import Keys    driver = webdriver.Chrome("../resources/chromedriver.exe")  driver.maximize_window()    # 訪問網址  driver.get("http://www.baidu.com")    # 找到搜索框  inputElement = driver.find_element_by_id("kw")    # 輸入搜索內容  inputElement.send_keys("小菠蘿測試筆記")    # ctrl+a全選  inputElement.send_keys(Keys.CONTROL, "a")    sleep(1)    # ctrl+c 複製輸入框內容  inputElement.send_keys(Keys.CONTROL, 'c')    sleep(1)    # ctrl+x 剪切輸入框內容  inputElement.send_keys(Keys.CONTROL, 'x')    sleep(1)    # ctrl+v 粘貼輸入框內容  inputElement.send_keys(Keys.CONTROL, 'v')    sleep(1)    # 空格鍵  inputElement.send_keys(Keys.SPACE)    sleep(1)    # 後退鍵  inputElement.send_keys(Keys.BACKSPACE)    sleep(1)    # tab鍵  inputElement.send_keys(Keys.TAB)    sleep(1)    # 回車鍵  inputElement.send_keys(Keys.ENTER)    # 刷新頁面  inputElement.send_keys(Keys.F5)

 

知識點

若要看還有什麼操作,直接ctrl+點擊 Keys 就能查看源碼啦