我正在使用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框架有关吗?

最佳答案

您的eleWebElement,是浏览器中实际元素的一种表示形式。它没有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/

10-09 09:06