天天看點

seleniun校驗canvas畫筆操作

問題描述:

浏覽器有一個畫闆的功能,需要去校驗畫筆,如何在畫闆上進行操作,并做校驗呢?

解決:

滑鼠移動操作利用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;