問題描述:
浏覽器有一個畫闆的功能,需要去校驗畫筆,如何在畫闆上進行操作,并做校驗呢?
解決:
滑鼠移動操作利用selenium的ActionChains類,模拟滑鼠移動。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
def drag_canvas(webdriver,beginX,beginY,endX,endY):
canvas = webdriver.find_element_by_id("canvas")
drawing = ActionChains(webdriver)\
.click_and_hold(canvas)\
.move_by_offset(beginX, beginY)\
.move_by_offset(endX, endY)\
.release()
drawing.perform()
click_and_hold:滑鼠點選某元素,不釋放
move_by_offset:滑鼠移動相對于之前位置的(x,y)
release():滑鼠釋放
perform():執行ActionChains的行為鍊校驗
如何校驗畫筆操作成功了呢?我采用的是擷取canvas像素點的顔色去判斷。擷取canvas的2d渲染背景:
var ctx = document.getElementsById('id').getContext('2d');
擷取canvas區域隐含的像素資料
var color = document.getElementsById('id').getContext('2d').getImageData(631,350,1,1).data
這個方法的傳回值是ImageData對象的data屬性,是一個數組,分别表示紅綠藍和透明度。
擷取畫筆寬度和顔色
document.querySelector('#innerBoard .enow__sektchpad').getContext('2d').lineWidth;
document.querySelector('#innerBoard .enow__sektchpad').getContext('2d').strokeStyle;