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

Javascript 单击WebGL(画布)中的选择坐标,javascript,jquery,testing,capybara,unity-webgl,Javascript,Jquery,Testing,Capybara,Unity Webgl,我正在使用一个嵌入WebGL播放器的应用程序 <body> <div class="application_layout"> <header class="header clearfix"> <nav class="header__left"> <ul class="clearfix"> <li class="menu__item menu__item--back">

我正在使用一个嵌入WebGL播放器的应用程序

<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>
显然,一切正常,脚本正确地点击了“返回”链接

但是当你试图点击WebGL div的任何区域时

var event = $.Event('click');
event.clientX = 200;
event.clientY = 100;
$('#canvas).trigger(event);
什么都没有发生


有没有办法在WebGL div上模拟鼠标点击?

你不应该尝试模拟点击-你应该告诉水豚去做点击。如果需要单击进行偏移,请使用单击方法可用的选项

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

任何时候使用JS在页面上触发事件,都会降低测试的有用性/有效性,因为它允许用户做一些从未做过的事情。

另一种选择是使用
rumouse
gem。但它不适用于headless,它需要窗口焦点,坐标是系统范围内的。

可以添加反向链接吗。。。。。。(创建一个代码段)?谢谢,代码@gaetanoM中已经有了。第7行。因为画布的id为id=“#canvas”,所以需要转义jQuery选择器中的第一个字符:$(“#canvas”)。这能解决你的问题吗?嘿,托马斯,你能提出别的建议吗?实际上,这是一个用户会做的事情,但是由于没有JS和WebGL框架是不可能交互的,我认为这是最好的解决办法。@fabersky你确定这是不可能的吗?你有没有试过只使用Capybara提供的
click
和x,y偏移量,如我的回答所示?@fabersky也要单击反向链接,您只需执行
单击链接(“反向”)
不通过JSYes执行单击,即
执行脚本($(document.elementFromPoint(100,20).click();)
只是检查脚本是否适用于非WebGl内容。@fabersky那么您是否只是尝试查找画布元素,并从ruby调用click(带有偏移量),而不是使用
execute\u script
element.click(x: 200, y: 100)