このコードをphantomjsで実行しています。form.elements が null を返し続ける理由がわかりません。Chrome 開発者コンソールで同じコードを実行したところ、必要な正しい結果が得られました。
私はjavascriptと関連するすべてにかなり慣れていません。光を当ててください。
var page = require('webpage').create();
page.open('http://www.kayak.com', function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
var form = page.evaluate(function(){
return document.getElementById('searchform');
});
console.log(form.elements[2].value);
}
phantom.exit();
});