Python爬蟲(chóng)之Selenium鼠標(biāo)事件的實(shí)現(xiàn)
一、常用方法
| 函數(shù)名 | 說(shuō)明 |
|---|---|
| click(on_element=None) | 點(diǎn)擊鼠標(biāo)右鍵 |
| click_and_hold(on_element=None) | 點(diǎn)擊鼠標(biāo)左鍵,不松開(kāi) |
| release(on_element=None) | 在某個(gè)元素位置松開(kāi)鼠標(biāo)左鍵 |
| context_click(on_element=None) | 點(diǎn)擊鼠標(biāo)右鍵 |
| double_click(on_element=None) | 雙擊鼠標(biāo)左鍵 |
| drag_and_drop(source, target) | 拖拽到某個(gè)元素然后松開(kāi) |
| drag_and_drop_by_offset(source, xoffset, yoffset) | 拽到某個(gè)坐標(biāo)然后松開(kāi) |
| move_by_offset(xoffset, yoffset) | 鼠標(biāo)從當(dāng)前位置移動(dòng)到某個(gè)坐標(biāo) |
| move_to_element(to_element) | 鼠標(biāo)移動(dòng)到某個(gè)元素 |
| move_to_element_with_offset(to_element, xoffset, yoffset) | 移動(dòng)到距某個(gè)元素(左上角坐標(biāo))多少距離的位置 |
| perform() | 執(zhí)行所有 ActionChains 中存儲(chǔ)的行為,相當(dāng)于提交 |
二、代碼示例
選幾個(gè)經(jīng)常使用的測(cè)試一下,其他事件語(yǔ)法相同
from selenium import webdriver
import time
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("https://www.baidu.cn")
#定位到需要右擊的元素,然后執(zhí)行鼠標(biāo)右擊操作(例:對(duì)新聞標(biāo)簽進(jìn)行右擊)
context_click_location = driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[3]/a[1]')
ActionChains(driver).context_click(context_click_location).perform()
time.sleep(2) #睡兩秒,看一下效果
# 定位到需要懸停的元素,然后執(zhí)行鼠標(biāo)懸停操作(例:對(duì)設(shè)置標(biāo)簽進(jìn)行懸停)
move_to_element_location = driver.find_element_by_xpath("/html/body/div[1]/div[1]/div/div[3]/a[8]")
ActionChains(driver).move_to_element(move_to_element_location).perform()
time.sleep(2) #睡兩秒,看一下效果
# 鼠標(biāo)懸浮后點(diǎn)擊高級(jí)搜索
driver.find_element_by_xpath("/html/body/div[1]/div[6]/a[2]").click()
time.sleep(2) #睡兩秒,看一下效果
driver.quit() #關(guān)閉所有標(biāo)簽頁(yè)
由于百度沒(méi)有可拖動(dòng)的元素,所以在菜鳥(niǎo)上找了一個(gè)網(wǎng)址進(jìn)行測(cè)試,由于菜鳥(niǎo)上的網(wǎng)頁(yè)是使用frame內(nèi)嵌的,所以添加了個(gè)處理frame的過(guò)程,關(guān)于frame的處理請(qǐng)參考我的另一篇文章:Python爬蟲(chóng) - Selenium(8)frame/iframe表單嵌套頁(yè)面
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
driver = webdriver.Chrome()
driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-example-draggable-scroll")
# 切換到目標(biāo)元素所在的frame
driver.switch_to.frame("iframeResult")
# 確定拖拽目標(biāo)的起點(diǎn)和終點(diǎn),完成拖拽
start_location = driver.find_element_by_id("draggable")
end_location = driver.find_element_by_id("draggable3")
ActionChains(driver).drag_and_drop(start_location,end_location).perform()
time.sleep(2) #睡兩秒,看一下效果
driver.quit() #關(guān)閉所有標(biāo)簽頁(yè)
Selenium文集傳送門(mén):
| 標(biāo)題 | 簡(jiǎn)介 |
|---|---|
| Python爬蟲(chóng) - Selenium(1)安裝和簡(jiǎn)單使用 | 詳細(xì)介紹Selenium的依賴(lài)環(huán)境在Windows和Centos7上的安裝及簡(jiǎn)單使用 |
| Python爬蟲(chóng) - Selenium(2)元素定位和WebDriver常用方法 | 詳細(xì)介紹定位元素的8種方式并配合點(diǎn)擊和輸入、提交、獲取斷言信息等方法的使用 |
| Python爬蟲(chóng) - Selenium(3)控制瀏覽器的常用方法 | 詳細(xì)介紹自定義瀏覽器窗口大小或全屏、控制瀏覽器后退、前進(jìn)、刷新瀏覽器等方法的使用 |
| Python爬蟲(chóng) - Selenium(4)配置啟動(dòng)項(xiàng)參數(shù) | 詳細(xì)介紹Selenium啟動(dòng)項(xiàng)參數(shù)的配置,其中包括無(wú)界面模式、瀏覽器窗口大小設(shè)置、瀏覽器User-Agent (請(qǐng)求頭)等等 |
| Python爬蟲(chóng) - Selenium(5)鼠標(biāo)事件 | 詳細(xì)介紹鼠標(biāo)右擊、雙擊、拖動(dòng)、鼠標(biāo)懸停等方法的使用 |
| Python爬蟲(chóng) - Selenium(6)鍵盤(pán)事件 | 詳細(xì)介紹鍵盤(pán)的操作,幾乎包含所有常用按鍵以及組合鍵 |
| Python爬蟲(chóng) - Selenium(7)多窗口切換 | 詳細(xì)介紹Selenium是如何實(shí)現(xiàn)在不同的窗口之間自由切換 |
| Python爬蟲(chóng) - Selenium(8)frame/iframe表單嵌套頁(yè)面 | 詳細(xì)介紹如何從當(dāng)前定位的主體切換為frame/iframe表單的內(nèi)嵌頁(yè)面中 |
| Python爬蟲(chóng) - Selenium(9)警告框(彈窗)處理 | 詳細(xì)介紹如何定位并處理多類(lèi)警告彈窗 |
| Python爬蟲(chóng) - Selenium(10)下拉框處理 | 詳細(xì)介紹如何靈活的定位并處理下拉框 |
| Python爬蟲(chóng) - Selenium(11)文件上傳 | 詳細(xì)介紹如何優(yōu)雅的通過(guò)send_keys()指定文件進(jìn)行上傳 |
| Python爬蟲(chóng) - Selenium(12)獲取登錄Cookies,并添加Cookies自動(dòng)登錄 | 詳細(xì)介紹如何獲取Cookies和使用Cookies進(jìn)行自動(dòng)登錄 |
| Python爬蟲(chóng) - Selenium(13)設(shè)置元素等待 | 詳細(xì)介紹如何優(yōu)雅的設(shè)置元素等待時(shí)間,防止程序運(yùn)行過(guò)快而導(dǎo)致元素定位失敗 |
| Python爬蟲(chóng) - Selenium(14)窗口截圖 | 詳細(xì)介紹如何使用窗口截圖 |
| Python爬蟲(chóng) - Selenium(15)關(guān)閉瀏覽器 | 詳細(xì)介紹兩種關(guān)閉窗口的區(qū)別 |
到此這篇關(guān)于Python爬蟲(chóng)之Selenium鼠標(biāo)事件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Selenium 鼠標(biāo)事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python多進(jìn)程共享numpy 數(shù)組的方法
這篇文章主要介紹了Python多進(jìn)程共享numpy 數(shù)組的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
編寫(xiě)Python腳本把sqlAlchemy對(duì)象轉(zhuǎn)換成dict的教程
這篇文章主要介紹了編寫(xiě)Python腳本把sqlAlchemy對(duì)象轉(zhuǎn)換成dict的教程,主要是基于Python的model類(lèi)構(gòu)建一個(gè)轉(zhuǎn)換的方法,需要的朋友可以參考下2015-05-05
使用ChatGPT進(jìn)行Abaqus二次開(kāi)發(fā)詳解
這篇文章主要為大家介紹了使用ChatGPT進(jìn)行Abaqus二次開(kāi)發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
python?subprocess執(zhí)行外部命令常用方法詳細(xì)舉例
這篇文章主要給大家介紹了關(guān)于python?subprocess執(zhí)行外部命令常用方法的相關(guān)資料,Python的subprocess模塊提供了一種在Python中調(diào)用外部命令的方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
pytest解讀一次請(qǐng)求多個(gè)fixtures及多次請(qǐng)求
這篇文章主要為大家介紹了一次請(qǐng)求多個(gè)fixtures,以及fixtures被多次請(qǐng)求的pytest官方解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
python實(shí)現(xiàn)的解析crontab配置文件代碼
這篇文章主要介紹了python實(shí)現(xiàn)的解析crontab配置文件代碼,也可以說(shuō)是python版的crontab,代碼中包含大量注釋,需要的朋友可以參考下2014-06-06
Java實(shí)現(xiàn)的執(zhí)行python腳本工具類(lèi)示例【使用jython.jar】
這篇文章主要介紹了Java實(shí)現(xiàn)的執(zhí)行python腳本工具類(lèi),結(jié)合實(shí)例形式分析了java使用jython.jar執(zhí)行Python腳本的具體操作技巧,需要的朋友可以參考下2018-03-03
如何在Python中利用matplotlib.pyplot畫(huà)出函數(shù)圖詳解
通過(guò)圖像可以直觀地學(xué)習(xí)函數(shù)變化、分布等規(guī)律,在學(xué)習(xí)函數(shù)、概率分布等方面效果顯著,下面這篇文章主要給大家介紹了關(guān)于如何在Python中利用matplotlib.pyplot畫(huà)出函數(shù)圖的相關(guān)資料,需要的朋友可以參考下2022-08-08

