问题描述:
浏览器有一个画板的功能,需要去校验画笔,如何在画板上进行操作,并做校验呢?
解决:
鼠标移动操作利用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;