我正在使用webdriverio测试html画布,并且需要测试画布上像素的颜色。
client.element('#canvas-id');
}).then(function (ele) {
var ctx = ele.getContext('2d');
var canvasColor = ctx.getImageData(50, 10, 1, 1).data;
//assert black at center of line
assert.equal(canvasColor[0], 255);
assert.equal(canvasColor[1], 255);
assert.equal(canvasColor[2], 255);
});
因此,我需要获取实际的html元素,以使getContext可用,而不是client.element返回的JSON对象。这可能与webdriverio框架有关吗?
最佳答案
您的ele
是WebElement
,是浏览器中实际元素的一种表示形式。它没有getImageData
方法,WebElement
没有与canvas
进行交互的特殊功能。
因此,您需要在客户端execute您的请求:
//...
}).then(function (ele) {
client.execute(function(element)
{
// this code gets executed on the client
return element.getContext('2d').getImageData(50, 10, 1, 1).data;
}, ele).then(function(canvasColor)
{
//assert black at center of line
assert.equal(canvasColor[0], 255);
assert.equal(canvasColor[1], 255);
assert.equal(canvasColor[2], 255);
});
});
(我没有测试代码,请告诉我们是否可行)
关于javascript - 使用webdriverio获取 Canvas 上下文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39771778/