Javascript 单击WebGL(画布)中的选择坐标
我正在使用一个嵌入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">
<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)