Нажатие на выбранные координаты в WebGL (холст) - PullRequest
0 голосов
/ 28 августа 2018

Я работаю с приложением, в которое встроен проигрыватель 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>

В моих приемочных тестах с RSpec и capybara я пытаюсь смоделировать действие щелчка на странице.

При выполнении

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

все, очевидно, работает нормально, и скрипт правильно нажимает на ссылку "Назад".

Но при попытке щелкнуть любую область элемента WebGL с помощью чего-то вроде

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

ничего не происходит.

Есть ли способ имитировать щелчок мышью на элементе WebGL?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Другой вариант - использовать камень rumouse. Но это не работает с безголовым, требуется фокусировка окна и общесистемные координаты.

0 голосов
/ 28 августа 2018

Вы не должны пытаться симулировать клики - вы просто должны сказать Capybara, чтобы сделать клик. Если вам необходимо смещение клика, используйте параметры, доступные для метода клика.

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

Каждый раз, когда вы прибегаете к использованию JS для запуска событий на странице, вы делаете свои тесты менее полезными / действительными, поскольку это позволяет делать то, что пользователь никогда не сможет.

...