我正在構建控制檯應用程序,在該應用程序中,我獲取頁面的html並使用HtmlAgilityPack解析它。在修改此頁面上的某些表單值之後,我想通過單擊同一頁面上的提交按鈕來提交它。我能夠使用它的ID屬性獲取按鈕,但無法以編程方式點擊它。 那麼我應該怎麼做呢?基本上我想在填寫完細節後提交表單,以便通過我的控制檯應用程序來實現這一點。單擊控制檯應用程序中的html按鈕
回答
您無法從控制檯應用程序發佈HTML文檔。 獲取文檔意味着您解析了HTML文本,但是您沒有與正在運行頁面的Web服務器鏈接,這將聽取您的回傳。
您的唯一方法是在您的控制檯應用程序上運行WebBrowser,導航到您的頁面,一旦您的導航發生,檢索文檔文本,解析它,然後通過webbrowser調用Click方法你的按鈕。
這裏是一個小例子:
class Program
{
private static WebBrowser wb1 = new WebBrowser();
[STAThread]
static void Main(string[] args)
{
runBrowserThread(new Uri("http://www.google.it"));
}
private static void runBrowserThread(Uri url)
{
var th = new Thread(() => {
var br = new WebBrowser();
br.DocumentCompleted += Br_DocumentCompleted; ;
br.Navigate(url);
Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
}
private static void Br_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//Retrieve string content of document
var document = ((WebBrowser)sender).Document;
var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)document.DomDocument;
var content = documentAsIHtmlDocument3.documentElement.innerHTML;
//Parse content with html agility pack or whatever
//Click on button
wb1.Document.GetElementById("myId").InvokeMember("click");
Application.ExitThread();
}
}
考慮我沒有測試,但應該是一個起點。另外,如果你有一個複雜的頁面,你可能不想依靠InternetExplorer(默認的WebBrowser)來加載你的頁面,但可以考慮在GeckoFX上使用Firefox,在這種情況下,你必須以一種方式編寫HTML檢索部分不同於IE瀏覽器。
請記住,包括System.Windows.Forms的和Microsoft.mshtml如果你想嘗試這個樣品出來
我試過了,它會拋出以下異常: - 在System.Windows.Forms.dll中發生未處理的異常'System.Threading.ThreadStateException' 附加信息:ActiveX控件'8856f961-340a-11d0-a96b- 00c04fd705a2'不能被實例化,因爲當前線程不在單線程單元中。 @Emanuele Ghetti –
哦,當然,STA的舊的甜蜜的問題 - 無論什麼... 我更新了工作(和測試,這次是P)的答案代碼 您可以在這個答案中找到更多的信息http:/ /stackoverflow.com/a/4271581/7581948 @vidit mathur –
很明顯,您不知道如何從控制檯應用程序發佈HTML文檔,但這並不能證明這是不可能的。可以在IE窗口中使用Internet Explorer導航到頁面,而不是Web瀏覽器窗口。 – user34660
- 1. 從窗體應用程序調用控制檯應用程序的Main方法(通過按鈕單擊事件)
- 2. 「Ctrl + C」按鈕按下控制柄C#控制檯應用程序
- 3. C#控制檯應用程序上的退出按鈕
- 4. 如何創建運行控制檯應用程序的按鈕?
- 5. 關閉MessageBox後的C#控制檯應用程序單擊
- 6. 應用程序關閉按鈕單擊
- 7. 單擊按鈕凍結應用程序
- 8. 點擊單選按鈕從Android應用程序的HTML頁面
- 9. 在c#控制檯應用程序中按下按鈕時添加項目
- 10. 單擊關閉按鈕時如何通知控制檯窗口程序?
- 11. 如何禁用Visual Studio控制檯應用程序中控制檯窗口的關閉按鈕?
- 12. 控制檯應用程序中的HttpContext
- 13. 控制檯應用程序中的System.Drawing.Color
- 14. C++應用程序中的控制檯
- 15. 控制檯應用程序中的iframe
- 16. 控制檯應用程序中的WriteableBitmapEx?
- 17. 控制檯應用程序中的ConfigurationErrorsException
- 18. 按鈕單擊強制關閉應用程序
- 19. 應用程序強制關閉按鈕單擊?
- 20. 閱讀在xterm控制檯應用程序上按下的第3個按鈕
- 21. 模擬按鈕單擊從控制檯的UI類
- 22. 單擊.NET中的Visual Basic應用程序中的按鈕
- 23. 從其他控制檯應用程序運行控制檯應用程序
- 24. 從控制檯應用程序啓動控制檯應用程序
- 25. iOS音量按鈕控制器應用程序按鈕
- 26. 控制檯應用程序凍結,直到按下按鍵/點擊鼠標
- 27. TIdTCPServer.OnExecute在控制檯應用程序中
- 28. C#控制檯應用程序中斷?
- 29. 檢測控制檯應用程序中的按鍵?
- 30. 在MFC應用程序中單擊按鈕時顯示錶單
看來你的問題在這裏:http://stackoverflow.com/questions/43571355/make-a-button -click-itself/43571424#43571424 –
@PhucTaiLe:我不這麼認爲。 (如果你想說你的鏈接應該回答OP的問題) – Clijsters
對不起,我的意思是鏈接回答你的問題:) –