单击WebGL中的选定坐标(画布)

时间:2018-08-28 16:37:49

标签: javascript jquery testing capybara unity-webgl

我正在使用一个嵌入WebGL Player的应用程序。

<body>
  <div class="application_layout">
    <header class="header clearfix">
      <nav class="header__left">
        <ul class="clearfix">
          <li class="menu__item menu__item--back">
            <a title="Back" class="link--back"></a>
          </li>
        </ul>
      </nav>
    </header>
    <div id="unity-webgl">
      <canvas style="cursor: default;" id="#canvas" width="1596" height="386"></canvas>
    </div>
  </div>
</body>

在使用RSpeccapybara进行的接受测试中,我试图模拟页面上的点击动作。

这样做的时候

execute_script("$(document.elementFromPoint(100, 20).click();")
# the position of the "Back" link

一切显然都可以正常工作,脚本正确地单击了“上一步”链接。

但是,当尝试单击WebGL div的任何区域时,诸如此类的

var event = $.Event('click');
event.clientX = 200;
event.clientY = 100;
$('#canvas).trigger(event);

什么都没发生。

有什么方法可以模拟WebGL div上的鼠标单击?

2 个答案:

答案 0 :(得分:0)

您不应该尝试模拟点击-您应该告诉Capybara进行点击。如果需要使点击偏移,请使用click方法可用的选项。

element.click(x: 200, y: 100)

每当您诉诸使用JS在页面上触发事件时,都会使您的测试不那么有用/无效,因为它可以执行用户无法执行的操作。

答案 1 :(得分:0)

另一种选择是使用rumouse gem。但这不适用于无头的情况,它需要窗口焦点并且坐标是系统范围的。