Selenium 请教 Selenium 测试 HTML 5 canvas 问题

Richard · 2017年11月04日 · 最后由 紫殇情结 回复于 2019年06月21日 · 1605 次阅读

根据项目要求,准备对公司 HTML 5 产品进行测试,在针对 canvas 测试的时候遇到了问题。由于 Canvas 在 inspector 里面是不透明的,无法获取到 canvas 内部的元素,也无法直接对元素进行操作。在做了很多功课后没有找到可行的方案,特在这里请教,一方面看看下面所列的第一个方案具体如何实现?或者是否还有其他更好的办法?

根据 google 下来的信息,看了几十个帖子针对 canvas 有三个思路用 selenium webdirver 开展测试,但是这些备选方案要么是不适用现有项目,要么是遇到障碍无法突破,具体思路如下:

  1. 通过元素坐标
    看了很多帖子,都建议使用 selenium action 方法来操作 canvas 元素,但是由于我们公司产品的 canvas 元素无法直接获取坐标,试了用 document.getContext, 在 Chrome inspector console 得到 canvas 的详细信息,但是没有获取到 canvas 里面的元素坐标。请问还有其他什么办法可以拿到 canvas 内部元素坐标吗?我问了公司开发,开发没说不行也没说行,一个本地小伙子,不是特别好沟通,而其他熟悉的程序员朋友没有用过 pixi 框架。

  2. 利用 GoJS 的 node 或者 Link
    具体实现方法如下链接,但是我们公司产品没有使用 GoJS,所以也不适用。
    https://forum.nwoods.com/t/simulate-selectionadorrnmenttemplate-click-selenium/6134/4

  3. 基于像素颜色对比
    这个方法无法适用我们公司产品,而且我需要获取 canvas 内部元素的 text,这个方法类似 sikuli 的图片比较,效率、准确率都是很难保证的。
    https://jdhnet.wordpress.com/2014/04/01/reading-out-the-canvas-element-in-the-robot-framework-via-javascript/

在此感谢各位朋友,希望得到指点。

共收到 1 条回复 时间 点赞

我也遇到同样的问题,想问楼主解决了么?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册