有沒有什麼方法可以使用惡夢(nodeJS模塊)按箭頭鍵?通過將密鑰發送到特定元素或通過單擊元素並將按鍵發送到頁面作爲一個整體?如何使用惡夢按箭頭鍵?
我的問題是,有一個下拉菜單,當點擊時,顯示下面的一些選項。這些選項似乎不可點擊,我嘗試點擊,甚至是realClick夢魘擴展。似乎都不能選擇下拉菜單中的任何元素。在玩這個頁面時,我發現使用箭頭鍵和回車鍵,我可以選擇沒有點擊的選項。那麼有沒有辦法將按鍵事件發送給電子?無論是通過噩夢還是通過直接訪問電子?
有沒有什麼方法可以使用惡夢(nodeJS模塊)按箭頭鍵?通過將密鑰發送到特定元素或通過單擊元素並將按鍵發送到頁面作爲一個整體?如何使用惡夢按箭頭鍵?
我的問題是,有一個下拉菜單,當點擊時,顯示下面的一些選項。這些選項似乎不可點擊,我嘗試點擊,甚至是realClick夢魘擴展。似乎都不能選擇下拉菜單中的任何元素。在玩這個頁面時,我發現使用箭頭鍵和回車鍵,我可以選擇沒有點擊的選項。那麼有沒有辦法將按鍵事件發送給電子?無論是通過噩夢還是通過直接訪問電子?
它被稱爲自動完成菜單,沒有標準的做法。 我試圖與谷歌合作,想出了一種方法。我認爲,制定通用解決方案將非常困難,因爲它取決於如何實現自動完成。希望這可以幫助!
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');
});
});
在duckduckgo的情況下,它是第一次點擊獲得自動完成窗口。第二個事件也是點擊第一個選項。基本上,檢查關於元素(文本輸入和自動完成選項)的事件監聽器,這會讓你明白應該觸發哪個事件。 – devilpreet
我能夠通過選擇而不是使用向下箭頭鍵來實現它。儘管這比解決方案更適合工作,但確實奏效。感謝您的建議和示例代碼! – Wso
您可能正在專門討論有關
@devilpreet我嘗試過使用element.setSelectedIndex,但它的效果與點擊相同,沒有任何反應,網頁上沒有任何可見的變化。不過謝謝你的想法! – Wso
我的不好。它是element.selectedIndex。請參考:[Select](https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement)。我一直致力於檢測這些元素,並相信我,使用HTML API是唯一最好的選擇。只有我看到它沒有發生的事情是定製處理程序,但我希望看到這樣的例子。謝謝 – devilpreet