2013-05-22 71 views
10

我似乎無法做一個簡單的表單提交。Phantomjs - 如何填充表單,提交併獲得結果?

下面是我向Google搜索表單提交「測試」並打印出結果的代碼。

var url = 'http://www.google.com/', 
    page = new WebPage(); 

page.open(url, function(status) { 
    if (status !== 'success') 
    { 
     console.log('Unable to access network'); 
     phantom.exit(); 
     return; 
    } 
    else 
    { 
     page.includeJs("//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js", function() { 
      page.evaluate(function() { 
       $('#gbqfq').val("Test"); 

       $("#gbqfba").click(); 

      }); 

      page.render('google.png'); 
      phantom.exit(); 
     }); 
    } 
}); 

任何人都可以告訴我該怎麼做?我在這裏和其他地方環顧四周,但似乎沒有任何工作。

+0

爲了記錄,你應該真的體貼這個答案http://stackoverflow.com/a/9256079/649687 – JMax

回答

5

在「點擊」之後立即渲染頁面是不夠的。您必須讓Web引擎有時間進行所需的任何調用並執行生成的JavaScript。

考慮以下你的電話後評價:

window.setTimeout(
    function() { 
    page.render('google.png'); 
    phantom.exit(0); 
    }, 
    5000 // wait 5,000ms (5s) 
); 

順便說一句 - 點擊可能會或可能不會取決於它是什麼樣的元素的工作。如果這不起作用,我建議你在互聯網上搜索如何點擊DIV或任何類型的元素(有一種涉及創建鼠標事件的技術)。

相關問題