我正在使用一个嵌入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>
在使用RSpec
和capybara
进行的接受测试中,我试图模拟页面上的点击动作。
这样做的时候
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上的鼠标单击?
答案 0 :(得分:0)
您不应该尝试模拟点击-您应该告诉Capybara进行点击。如果需要使点击偏移,请使用click方法可用的选项。
element.click(x: 200, y: 100)
每当您诉诸使用JS在页面上触发事件时,都会使您的测试不那么有用/无效,因为它可以执行用户无法执行的操作。
答案 1 :(得分:0)
另一种选择是使用rumouse
gem。但这不适用于无头的情况,它需要窗口焦点并且坐标是系统范围的。