Как выполнить перетаскивание с помощью кукловода для эмулируемых устройств - PullRequest
0 голосов
/ 06 марта 2019

Кому-нибудь удалось смоделировать взаимодействие с перетаскиванием и кукловодом, когда страница находится в режиме эмулированного устройства. Чтобы сделать это как пользователь, вы должны удерживать клавишу SHIFT при перетаскивании мыши.

К сожалению, следующее не работает

const cx = 160;
const cy = 284;
await page.mouse.move(cx, cy);
await page.keyboard.down('Shift');
await page.mouse.down();
await page.mouse.move(cx, cy - 300, {steps: 300});
await page.mouse.up();
await page.keyboard.up('Shift');

1 Ответ

1 голос
/ 06 марта 2019

Согласно этому разговору на этой проблеме , они не планируют добавлять такую ​​функцию. Я процитирую их ответ,

Мне не нравится добавлять API уровня кукловода для событий WebPlatform. Клики кукловода сильно отличаются от кликов веб-платформы document.createEvent; имея их в качестве единственного первоклассного API подчеркивает, что они рекомендуют способ нажимать на стр.

Я бы рекомендовал использовать набор вспомогательных методов для удовлетворения ваших потребностей.

Однако вы можете сделать это так,

await this._client.send('Input.dispatchMouseEvent', {
      type: 'mousePressed',
      button: this._button,
      x: this._x,
      y: this._y,
      modifiers: this._keyboard._modifiers,
      clickCount: (options.clickCount || 1)
});

Вот еще один фрагмент кода для запуска одного маленького события мыши (для использования с функцией .evaluate).

function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}
...