selenium+python自動化94-行為事件(ActionChains)源碼詳解

來源:互聯網
上載者:User

標籤:[]   指定元素   調用   find   有用   滑鼠右鍵   控制   自動   結合   

ActionChains簡介

actionchains是selenium裡面專門處理滑鼠相關的操作如:滑鼠移動,滑鼠按鍵操作,按鍵和操作功能表(滑鼠右鍵)互動。
這對於做更複雜的動作非常有用,比如懸停和拖放。

actionchains也可以和快速鍵結合起來使用,如ctrl,shif,alt結合滑鼠一起使用

當你使用actionchains對象方法,行為事件是儲存在actionchains對象隊列。當你使用perform(),事件按順序執行。

  • 方法一:可以寫一長串
menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()
  • 方法二:可以分幾步寫
menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")actions = ActionChains(driver)actions.move_to_element(menu)actions.click(hidden_submenu)actions.perform()

無論哪種方式,操作都是按照調用的順序執行挨個執行!

方法介紹

1.以下提到的Keys類,是selenium裡面的鍵盤事件類別,匯入方法:

from selenium.webdriver.common.keys import Keys

2.滑鼠事件使用匯入方法:

from selenium.webdriver.common.action_chains import ActionChains

class ActionChains(object):    def __init__(self, driver):        self._driver = driver        self._actions = []    def perform(self):        # 執行行為事件    def click(self, on_element=None):        點擊:        - 如果參數不寫,那麼點擊的是當前滑鼠位置        - 如果參數寫定位到的元素對象element,那就是點這個元素    def click_and_hold(self, on_element=None):        滑鼠左鍵按住某個元素        - 如果參數不寫,那麼點的是當前滑鼠位置        - 如果參數寫定位到的元素對象element,那就是點這個元素    def context_click(self, on_element=None):        滑鼠右鍵點擊        - 如果參數不寫,那麼點的是當前滑鼠位置        - 如果參數寫定位到的元素對象element,那就是點這個元素    def double_click(self, on_element=None):        雙擊滑鼠        - 如果參數不寫,那麼點的是當前滑鼠位置        - 如果參數寫定位到的元素對象element,那就是點這個元素    def drag_and_drop(self, source, target):        按住源元素上的滑鼠左鍵,然後移動到目標元素並釋放滑鼠按鍵        - source: 按住滑鼠的元素位置        - target: 鬆開滑鼠的元素位置    def drag_and_drop_by_offset(self, source, xoffset, yoffset):        按住源元素上的滑鼠左鍵,然後移動到目標位移量並釋放滑鼠按鍵。        - source: 按住滑鼠的元素位置        - xoffset: X 軸的位移量        - yoffset: Y 軸的位移量    def key_down(self, value, element=None):        只發送一個按鍵,而不釋放它。只應用於修飾鍵(控制、alt和shift)。        - value: 要發送的修飾符鍵。值在“Keys”類中定義。        - element: 定位的元素        如果element參數不寫就是當前滑鼠的位置        舉個例子,按住 ctrl+c::        ActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c‘).key_up(Keys.CONTROL).perform()    def key_up(self, value, element=None):        # 釋放按鍵,配合上面的一起使用    def move_by_offset(self, xoffset, yoffset):        將滑鼠移動到當前滑鼠位置的位移量         - xoffset: X軸 作為一個正整數或負整數移動到x位移量         - yoffset: Y軸 位移,作為正整數或負整數。    def move_to_element(self, to_element):        滑鼠移至上方        - to_element: 定位需要懸停的元素    def move_to_element_with_offset(self, to_element, xoffset, yoffset):        通過指定元素的位移量移動滑鼠。位移量與元素的左上方相對        - to_element: 定位需要懸停的元素        - xoffset: X 軸位移量        - yoffset: Y 軸位移量    def release(self, on_element=None):        釋放一個元素上的滑鼠按鍵。        - 如果參數不寫,那麼是當前滑鼠位置        - 如果參數寫定位到的元素對象element,那就是這個元素.    def send_keys(self, *keys_to_send):        發送到當前焦點元素        要發送的按鍵。修飾符鍵常數可以在“Keys”類。       def send_keys_to_element(self, element, *keys_to_send):        發送到定位到的元素上        - element: 定位的元素        - keys_to_send: 要發送的按鍵。修飾符鍵常數可以在“Keys”類。
舉個案例

1.實現Ctrl +F5 的按鍵組合功能

# coding:utf-8from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.keys import Keysimport timedriver = webdriver.Firefox()driver.get("https://www.baidu.com")time.sleep(3)# 實現Ctrl+F5重新整理ActionChains(driver).key_down(Keys.CONTROL).send_keys(Keys.F5).key_up(Keys.CONTROL).perform()

源碼可以在以下目錄查看:Lib\site-packages\selenium\webdriver\common\action_chains.py

selenium+python自動化94-行為事件(ActionChains)源碼詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.