亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

selenium鼠標操作實戰(zhàn)案例詳解

 更新時間:2023年05月15日 10:50:48   作者:行者張良  
在實際場景中,會有單擊、長時間單擊、雙擊、右鍵、拖拽等鼠標操作,selenium提供了名為ActionChains的類來處理這些操作,下面這篇文章主要給大家介紹了關于selenium鼠標操作實戰(zhàn)案例的相關資料,需要的朋友可以參考下

前言

人類頻繁的用手操作鼠標和鍵盤,為了解決這個問題,selenium工具為我們提供了一個類來處理這些事件— Actionchains ,該類可以完成鼠標移動,鼠標點擊事件、鍵盤輸入、內(nèi)容菜單交互等交互行為。

1、常見的鼠標操作有:單擊、右鍵點擊、雙擊、移動鼠標、拖拽鼠標。( Actionchains 代替人類之手去模擬鼠標操作,比如單擊、雙擊、點擊右鍵、拖拽、長按等動作)

2、selenium工具中全局鼠標操作語法如下:

第1步:初始化ActionChians類(動作鏈條): actions = ActionChains(driver)

第2步:找到要操作的元素: find_element

第3步:調(diào)用鼠標操作方法: actions.move_to_element(element)

第4步:執(zhí)行鼠標操作方法: actions.perform()

3、實際上在調(diào)用 Actionchains 類的方法時,不會立即執(zhí)行鼠標操作,而是會將所有的操作按順序存放在一個隊列里,最終調(diào)用 perform() 方法時,隊列中的操作會依次進行。

( ActionChains 類提供了對動作的鏈式操作,也就是可以生成一個操作的隊列,將復雜的操作過程分解成單個操作,然后組合起來一次性執(zhí)行)

(在 ActionChains 類中所有提供的鼠標事件方法,在調(diào)用的時候所有的行為都存儲在 ActionChains 對象中,而 perform() 方法就是真正去執(zhí)行所有的鼠標事件。)

4、鼠標的操作都包含在 ActionChains 類中,所以要模擬鼠標操作是首先要導入該包: (對 ActionChains 類進行實例化對象操作,調(diào)用操作(元素)方法,再執(zhí)行 perform() 方法。)

from selenium.webdriver.common.action_chains import ActionChains

ActionChains 類常用方法

1、click_and_hold(on_element=None) :點擊鼠標左鍵,不松開

2、context_click(on_element=None) :點擊鼠標右鍵

說明:對于點擊鼠標右鍵,如果彈出的是瀏覽器默認的菜單,Selenium沒有提供操作菜單選項的方法; 如果是自定義的右鍵菜單,則可以通過元素定位來操作菜單中的選項。

3、double_click(on_element=None) :雙擊鼠標左鍵

4、drag_and_drop(source, target) :拖拽到某個元素然后松開

說明:模擬鼠標拖動動作,選定拖動源元素釋放到目標元素后鼠標松開。

1.源元素:source = driver.find_element_by_id(xxx)

2.目標元素 :target = driver.find_element_by_id(xxx)

3.調(diào)用方法 :action.drag_and_drop(source, target).perform()

5、move_by_offset(xoffset, yoffset) :鼠標從當前位置移動到某個坐標

6、move_to_element(to_element) :鼠標移動到某個元素

說明: 模擬鼠標懸停在指定的的元素上

7、release(on_element=None) :在元素上釋放按住的鼠標按鈕(在某個元素位置松開鼠標左鍵)

8、pause(seconds) :暫停操作(秒)

ActionChains 類其他方法

1、 perform(self) --執(zhí)行鼠標操作方法

2、 reset_actions() :清除已在隊列中的鼠標操作命令

3、 click(on_element=None) :點擊鼠標左鍵

4、 click_and_hold(on_element=None) :點擊鼠標左鍵,不松開

5、 context_click(on_element=None) :點擊鼠標右鍵

6、 double_click(on_element=None) :雙擊鼠標左鍵

7、 drag_and_drop(source, target) :拖拽到某個元素然后松開(需要獲取到目標位置的元素定位)

8、 drag_and_drop_by_offset(source, xoffset, yoffset) :拖拽到某個坐標然后松開(需要獲取到目標位置的位置坐標)

9、 key_down(value, element=None) :按下某個鍵盤上的鍵

10、key_up(value, element=None) :松開某個鍵

11、 move_by_offset(xoffset, yoffset) :鼠標從當前位置移動到某個坐標(需要獲取到目標位置的位置坐標)

12、 move_to_element(to_element) :鼠標移動到某個元素

13、 move_to_element_with_offset(to_element, xoffset, yoffset) :移動到距某個元素(左上角坐標)多少距離的位置

14、 pause(seconds) :暫停操作(秒)—結合使用,比如:鼠標移動到某元素上懸停的時間。(暫停所有動作,相當于等待,用于鏈式操作過程中的等待)

15、 release(on_element=None) :在元素上釋放按住的鼠標按鈕,與 click_and_hold(on_element=None) 點擊鼠標左鍵不松開結合使用。(如果有鼠標按下的操作,那么需要通過 release() 方法釋放鼠標)

16、 send_keys(*keys_to_send) :發(fā)送某個鍵到當前焦點的元素

17、 send_keys_to_element(element, *keys_to_send) :發(fā)送某個鍵到指定元素

實例

示例1

1、鼠標單擊操作: ac.click(element).perform()

2、元素單擊操作: element.click()

3、移動操作(鼠標懸停): ac.move_to_element(element).perform()

將鼠標移動至右側【設置】處,并點擊【高級搜索】

示例2:

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.maximize_window()
driver.implicitly_wait(5)

# 定位百度首頁右上角的設置元素
set_ele = driver.find_element(by=By.XPATH, value="http://span[@id='s-usersetting-top']")

# # 第一步:創(chuàng)建一個鼠標操作的對象
action = ActionChains(driver)
# # 第二步:添加移動操作
action.move_to_element(set_ele)
# # 第三步:執(zhí)行動作
action.perform()

# 三行代碼可寫成一行:支持鏈式調(diào)用
# ActionChains(driver).move_to_element(set_ele).perform()

# (鼠標移動到設置元素后,會出現(xiàn)一個下選框,其中有高級搜索) 顯式等待設置:高級搜索可點擊
WebDriverWait(driver, 5, 0.2).until(
    EC.element_to_be_clickable((By.XPATH, "http://a[text()='高級搜索']"))
).click()

time.sleep(5)
driver.quit()

實例3

代碼如下:

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

chr_driver = webdriver.Chrome()
chr_driver.maximize_window()
chr_driver.get("https://www.baidu.com/")

ele = chr_driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')
# 實例化,懸浮、點擊,可以連續(xù)調(diào)用多個方法,是因為返回的都是self對象
ActionChains(chr_driver).move_to_element(ele).pause(0.5).click(ele).perform()

實例4

1、鼠標右鍵單擊操作

# 創(chuàng)建瀏覽器實例對象
driver = webdriver.Chrome()
# 創(chuàng)建鼠標實例化對象
chains = ActionChains(driver)
# 訪問商城網(wǎng)站
driver.get("http://39.98.138.157/shopxo/index.php")
# 最大化瀏覽器窗口
driver.maximize_window()
# 通過 xpath 定位用戶名
username = driver.find_element_by_xpath("http://input[@name='accounts']")
# 再鼠標右鍵單擊輸入框
chains.context_click(username).perform()

2、鼠標左鍵雙擊動作

# 創(chuàng)建瀏覽器實例對象
driver = webdriver.Chrome()
# 創(chuàng)建鼠標實例化對象
chains = ActionChains(driver)
# 訪問商城網(wǎng)站
driver.get("http://39.98.138.157/shopxo/index.php")
# 最大化瀏覽器窗口
driver.maximize_window()
# 通過 xpath 定位用戶名
username = driver.find_element_by_xpath("http://input[@name='accounts']")
# 再鼠標雙擊全選輸入框內(nèi)容
chains.double_click(username).perform()

3、鼠標懸停操作

# 創(chuàng)建瀏覽器實例對象
driver = webdriver.Chrome()
# 創(chuàng)建鼠標實例化對象
chains = ActionChains(driver)
# 訪問商城網(wǎng)站
driver.get("http://39.98.138.157/shopxo/index.php")
# 最大化瀏覽器窗口
driver.maximize_window()
# 通過 xpath 定位登錄文本
login = driver.find_element_by_xpath("http://div[@class='member-login']/a[text()='登錄']")
# 再讓鼠標懸停到該元素上
chains.move_to_element(login).perform()

4、鼠標將某元素拖拽到另一個元素的位置后松開

# 創(chuàng)建瀏覽器實例對象
driver = webdriver.Chrome()
# 創(chuàng)建鼠標實例化對象
chains = ActionChains(driver)
# 訪問商城網(wǎng)站
driver.get("http://39.98.138.157/shopxo/index.php")
# 最大化瀏覽器窗口
driver.maximize_window()
# 先定位被拖拽的元素
source = driver.find_element_by_xpath('//*[@id="doc-topbar-collapse"]/ul/li[1]/a')
# 再定位目標元素
target = driver.find_element_by_xpath("http://input[@name='accounts']")
# 最后調(diào)用 drag_and_drop 方法將定位到的source元素拖拽到目標元素target
chains.drag_and_drop(source, target)

5、鼠標移動到指定元素

element = driver.find_element_by_id('xxx')
ActionChains(driver).move_to_element(element).perform()

6、鼠標以某個元素位置為原點,在該元素位置的橫向和縱向格移動100像素

element = driver.find_element_by_id('xxx')
ActionChains(driver).move_to_element_with_offset(element, 100, 100).perform()

7、雙擊元素(如果沒有指定元素則在當前鼠標所在位置雙擊)

element = driver.find_element_by_id('xxx')
ActionChains(driver).double_click(element).perform()

8、在指定元素上點擊鼠標右鍵(如果沒有指定元素則在當前鼠標所在位置單擊右鍵)

element = driver.find_element_by_id('xxx')
ActionChains(driver).context_click(element).perform()

9、鼠標左鍵在某元素處按下不松(如果沒有指定元素則在當前鼠標所在位置按下左鍵不松開)

element = driver.find_element_by_id('xxx')
ActionChains(driver).click_and_hold(element).perform()

10、鼠標按住element1元素,拖動到element2元素。

element1 = driver.find_element_by_id('xxx')
element2 = driver.find_element_by_id('xxx')
ActionChains(driver).drag_and_drop(element1, element2).perform()

11、鼠標拖動某指定元素向左上角橫向縱向移動100像素

element = driver.find_element_by_id('xxx') 
ActionChains(driver).drag_and_drop_by_offset(element, -100, -100)

總結

到此這篇關于selenium鼠標操作實戰(zhàn)案例的文章就介紹到這了,更多相關selenium鼠標操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式

    利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式

    今天小編就為大家分享一篇利用pandas將非數(shù)值數(shù)據(jù)轉換成數(shù)值的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python批量處理文件或文件夾

    python批量處理文件或文件夾

    這篇文章主要為大家詳細介紹了python批量處理文件或文件夾,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Pytorch實現(xiàn)張量的創(chuàng)建與使用方法

    Pytorch實現(xiàn)張量的創(chuàng)建與使用方法

    本文主要介紹了Pytorch實現(xiàn)張量創(chuàng)建使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • PyQt5 關于Qt Designer的初步應用和打包過程詳解

    PyQt5 關于Qt Designer的初步應用和打包過程詳解

    Qt Designer中的操作方式十分靈活,其通過拖拽的方式放置控件可以隨時查看控件效果。這篇文章主要介紹了PyQt5 關于Qt Designer的初步應用和打包,需要的朋友可以參考下
    2021-09-09
  • Python?matplotlib實戰(zhàn)之氣泡圖繪制

    Python?matplotlib實戰(zhàn)之氣泡圖繪制

    氣泡圖是一種多變量的統(tǒng)計圖表,可以看作是散點圖的變形,這篇文章主要為大家介紹了如何使用Matplotlib繪制氣泡圖,需要的小伙伴可以參考下
    2023-08-08
  • python 用opencv實現(xiàn)圖像修復和圖像金字塔

    python 用opencv實現(xiàn)圖像修復和圖像金字塔

    這篇文章主要介紹了python 如何用opencv實現(xiàn)圖像修復和圖像金字塔,幫助大家更好的理解和使用python處理圖片,感興趣的朋友可以了解下
    2020-11-11
  • Pytorch中的數(shù)據(jù)集劃分&正則化方法

    Pytorch中的數(shù)據(jù)集劃分&正則化方法

    這篇文章主要介紹了Pytorch中的數(shù)據(jù)集劃分&正則化方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python中的super()面向對象編程

    Python中的super()面向對象編程

    這篇文章主要介紹了Python的面向對象編程 super,super在Pyhon是一個特殊的的類,想具體了解的朋友請參考下面文章內(nèi)容
    2021-09-09
  • python操作mysql實現(xiàn)一個超市管理系統(tǒng)

    python操作mysql實現(xiàn)一個超市管理系統(tǒng)

    超市管理系統(tǒng)有管理員和普通用戶兩條分支,只需掌握Python基礎語法,就可以完成這個項目,下面這篇文章主要給大家介紹了關于python操作mysql實現(xiàn)一個超市管理系統(tǒng)的相關資料,需要的朋友可以參考下
    2022-12-12
  • Python使用列表推導式快速生成列表

    Python使用列表推導式快速生成列表

    這篇文章主要介紹了Python使用列表推導式快速生成列表,列表推導式是Python構建列表list的一種快捷方式,可以使用簡潔的代碼就創(chuàng)建出一個列表,需要的朋友可以參考下
    2023-07-07

最新評論