オートコンプリートメニューと呼ばれ、標準的な方法はありません。 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');
});
});
具体的には
@devilpreet element.setSelectedIndexを使用しようとしましたが、クリックすると同じ結果が得られましたが、何も起こりません。ウェブページに目に見える変化はありません。しかし、アイデアをありがとう! – Wso
私の悪いです。それはelement.selectedIndexでした。 [選択](https://developer.mozilla.org/en/docs/Web/API/HTMLSelectElement)を参照してください。私はこのような要素の検出に取り組んできましたが、HTML APIを使用することが唯一の最良の方法です。私はそれが起こっていないことがわかる唯一の方法は、カスタムハンドラを持っていることですが、私はそのような例を見たいと思います。ありがとうございました – devilpreet