Эмулируйте щелчок с dispatchEvent () на сайте SmartGWT - PullRequest
0 голосов
/ 06 марта 2019

Мне нужно выполнить длительный тест, который включает много повторных нажатий. Из-за этого я подумал об использовании ClickEvent для эмуляции клика - это было бы намного удобнее, чем использование autohotkey или подобных ему.

Я попробовал следующий код:

var cells = [...window.top.document.querySelectorAll(".DialogMapaPresenter_treeGrid td")];
var rndcell = cells[Math.floor(Math.random()*cells.length)];
// Mousedown click first
rndcell.dispatchEvent(new MouseEvent("mousedown",{
    bubbles: true,
    cancelable: true
  }));
// then mouse up
setTimeout(()=>{rndcell.dispatchEvent(new MouseEvent("mouseup",{
    bubbles: true,
    cancelable: true
  }));},50);
// finaly a click
setTimeout(()=>{rndcell.dispatchEvent(new MouseEvent("click",{
    bubbles: true,
    cancelable: true
  }));},60)

Я отправляю все три события мыши, и ничего не происходит. Я пытаюсь вызвать cellClickHandler на TreeGrid. Вот такой:

final TreeGrid treeGrid = this.getTreeGrid();
treeGrid.addCellClickHandler((event)->{
    ListGridRecord recGeneric = event.getRecord();
    if(recGeneric != null) {
        logger.debug(
                "Cell clicked: "
        +recGeneric.getAttribute("SOME ATTRIBUTE")
        );
    }
});

Обработчик работает при щелчке мышью.

...