如何使用噩梦按箭头键?

时间:2017-06-23 15:50:21

标签: node.js electron nightmare

有没有办法使用噩梦(nodeJS模块)按箭头键?通过将密钥发送到特定元素,还是单击元素并将按键发送到整个页面?

我的问题是有一个下拉菜单,当点击它时,会在它下面显示一些选项。这些选项似乎不是可点击的,我尝试过点击甚至是realClick噩梦扩展。似乎都无法选择下拉列表中的任何元素。在玩这个页面时,我发现通过使用箭头键和回车键,我可以选择选项而不需要点击。那么有没有办法将按键事件发送给电子?要么通过噩梦,要么直接访问电子?

1 个答案:

答案 0 :(得分:1)

它被称为自动完成菜单,没有标准的方法。 我尝试与Google合作并提出了一种方法。我认为,制作通用解决方案很难,因为它取决于如何实现自动完成。希望这有帮助!

var Nightmare = require('nightmare');

var nightmare = Nightmare({
  show: true,
  webPreferences: {}
})

nightmare
  .goto('http://www.google.co.in')
  .evaluate(function(searchTerm) {
    var elem = document.querySelector('#lst-ib');
    elem.value = searchTerm;

    //Do mousedown to initiate auto complete window
    var event = document.createEvent('MouseEvent');
    event.initEvent('mousedown', true, true);
    elem.dispatchEvent(event);
  }, 'Leo')
  .then(function() {
    //Wait for results to appear
    nightmare.wait(1000)
    .evaluate(function() {
      //Click the first option of List
      var first = document.querySelector('#sbtc > div.gstl_0.sbdd_a > div:nth-child(2) > div.sbdd_b > div > ul > li:nth-child(1)');
      first.firstElementChild.click();
    }).then(function() {
      console.log('All Done');
    });
  });