本質上是調用鼠標模擬點擊的模塊 ActionChains ,實現 點擊不松開 -> 模擬移動鼠標 -> 松開鼠標 的這么一個操作。這里依然以 迅捷圖片 作為示范
1. 打開網站並上傳圖片(index)
依然使用selenium打開網站,相比之前要多引入 ActionChains 模塊,用來模擬點擊。
接下來手動上傳圖片,自動上傳圖片的的教程可以看我之前寫的博客 《python+Selenium+AutoIT上傳本地資源》
現在的頁面應該是這個樣子(這是一個錨點)

2. 實現模擬點擊
這一步的作用實際上是為了定位,用來查看當前鼠標在哪個位置。這里分為兩步:
- 獲取圖片所在的元素
- 執行點擊
第一步 :通過閱讀源碼,可以得到該元素的classname,直接獲取該對象
第二步 :使用下列函數進行模擬點擊:
move_to_element_with_offset指的是鼠標在canvas(畫布)上移動到(x,y)的位置context_click指的是右鍵點擊perform是執行前面的所有操作
就可以得到如下結果:
彈出菜單的位置就是坐標為(300,300)的那個點了。如果要用鼠標左鍵的話,將 context_click 修改為 click 就可以了。
3. 實現模擬拖拽
除了 context_click 、 click 之外,還有一個函數 click_and_hold ,意思是點擊后不松開,這也就是要實現截圖的主要函數了。接下來的代碼分成三個步:
- 點擊並不松開
- 移動鼠標
- 松開鼠標
第一步 :將點擊函數替換成 click_and_hold 即可
第二步 :執行 move_by_offset 函數,將鼠標在之前的基礎上移動xoffset,yoffset的距離
第三步 :執行 release 即可
順序執行后,就可以看到裁剪框出現了。
4. 完整代碼
從這里開始手動上傳圖片,達到 這樣 的效果
接下來執行以下代碼
canvas = browser.find_element_by_class_name('upper-canvas ') ActionChains(browser).move_to_element_with_offset(canvas,200,200).click_and_hold().perform()
ActionChains(browser).move_by_offset(xoffset=300,yoffset=200).perform()
ActionChains(browser).release().perform()
轉:https://www.pythonf.cn/read/99311
