2014-07-21 56 views
1

使用WebClient我可以下載源代碼。如何在模擬按鈕點擊後下載網站的源代碼?

WebClient.DownloadString(url);

使用WebBrowser,我可以模擬鼠標點擊,通過Id獲取HTML元素並調用它。

WebBrowser.Document.GetElementById(「commit」)。InvokeMember(「click」);

我的問題是:如何能夠將這些混合到:

  1. 按下按鈕(一次或多次,該ID保持不變)。
  2. 下載更新的源代碼(點擊按鈕後)。

P.S.正如你可以猜到這個按鈕是一個加載新元素的「查看更多」按鈕,並且url始終保持不變,那麼就沒有第2頁了。這就是爲什麼我有一個問題。

P.S. This看起來像我的問題,但在我的情況下,它是相同的頁面,而不是一個新的窗口

+0

你爲什麼不只是使用AJAX在像jQuery框架? – MarioDS

+0

我不知道你在說什麼,我很無知,但我會做一些研究,謝謝。 – Neflux

+0

@MDeSchaepmeester我沒有搜索很多,但我發現按鈕本身正在提交一個AJAX命令!這一個:「$ .ajax({complete:function(request){More.complete()},data:$。param($(this).serializeArray())+'&authenticity_token ='+ encodeURIComponent('ta55EgL5SY8W0B6ygmG0N6mgO2ueub40qa0xaj8c6Ok =' ),dataType:'script',type:'post',url:'/ AriannaLonghin/more'}); Forms.More.afterSubmit(); return false;「你能從中得到什麼嗎?測試頁面是[這一個](http://ask.fm/AriannaLonghin)。 (所有Ask.fm配置文件都是公開的,所以這不是問題) – Neflux

回答

1

讓我告訴你,這樣結合使用WebBrowserWebClient是沒有意義的。 WebBrowser不是WebClient或類似的東西的抽象,他們是完全不同,他們是完全分開的。

假設您想使用WebBrowser到persue這個問題,你可以使用WebBrowser組件,像這樣下載頁面的源代碼:

webBrowser1.Document.GetElementById("commit").InvokeMember("click"); 
webBrowser1.DocumentCompleted += (o, args) => 
{ 
    string pageSource = webBrowser1.DocumentText; 
}; 
+0

我知道這是令人困惑和愚蠢的,但我不知道任何其他解決方案。我正在嘗試您的解決方案。 – Neflux

+0

所有的好人。你有沒有試過我提供的代碼? –

+0

你的代碼正在工作,但我發現它以某種方式觸發了錯誤的按鈕(無論如何都是相同的ID?我的錯),所以我嘗試了另一種類似的方式,它的工作原理:[The class option](http://stackoverflow.com /問題/ 5150610 /如何對模擬鼠標點擊,用最web瀏覽器控制)。謝謝你,你幫我找到了解決辦法。現在我有另一個問題,它不會工作兩次!如果我將這些調用放入clickButton事件中,則每次點擊都會起作用,但如果將其放入for循環中,它將不起作用。我試圖在每個週期Thread.Sleep(1000),使其運行更好,但它不工作。 – Neflux