天天看点

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;