如何使用噩梦按方向键?
How to use nightmare to press arrow key?
有什么方法可以使用nightmare(nodeJS模块)来按方向键吗?是通过将键发送到特定元素,还是通过单击元素并将按键发送到整个页面?
我的问题是有一个下拉菜单,单击该菜单后会在其下方显示一些选项。这些选项似乎不可点击,我试过点击甚至 realClick 噩梦扩展。似乎都无法 selecting 下拉列表中的任何元素。在浏览页面时,我发现通过使用箭头键和回车键,我可以 select 选项而无需单击。那么有什么办法可以将按键事件发送给电子吗?是通过噩梦还是直接访问 electron?
它被称为自动完成菜单,没有标准的做法。
我尝试使用 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');
});
});
有什么方法可以使用nightmare(nodeJS模块)来按方向键吗?是通过将键发送到特定元素,还是通过单击元素并将按键发送到整个页面?
我的问题是有一个下拉菜单,单击该菜单后会在其下方显示一些选项。这些选项似乎不可点击,我试过点击甚至 realClick 噩梦扩展。似乎都无法 selecting 下拉列表中的任何元素。在浏览页面时,我发现通过使用箭头键和回车键,我可以 select 选项而无需单击。那么有什么办法可以将按键事件发送给电子吗?是通过噩梦还是直接访问 electron?
它被称为自动完成菜单,没有标准的做法。 我尝试使用 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');
});
});