簡體   English   中英

控制Internet Explorer以輸入用戶名/密碼

[英]Controlling Internet Explorer in order to enter username/password

我正在考慮嘗試讓我的C ++應用程序執行以下操作:

  1. 打開Internet Explorer
  2. 打開一個網頁
  3. 在網頁中的特定表單中輸入名稱和密碼
  4. 單擊網頁上的“提交”按鈕以打開新頁面

從我在互聯網上的搜索看來,使用COM可能會使這成為可能,盡管我可能不正確。 我現在正盡力學習COM,但有些幫助會很棒。 我想在不使用MFC的情況下這樣做。

我注意到這個問題,我正在尋找什么,但我無法理解建議的解決方案。 例如,我的工具箱中沒有IWebBrowser2選項。

編輯:

為了使我的問題更清楚,我通過簡單地運行編碼的UI測試在C#版本中完成了這項任務,但這不適用於C ++。 我希望打開IE(不在應用程序本身),找到用戶名和密碼表單,傳遞它們的字符串,然后在頁面上找到提交按鈕並單擊它。

這很可能來自c ++。 你將不得不潛入winapi做一些擊鍵的東西以及窗口處理。

我不會涉及所有代碼,但您必須執行以下操作:

  • 啟動ie(如果你給它一個命令行arg與網頁,它將打開該頁面)。
  • 確保ie窗口是聚焦的(要么只是等待,如果你想保持簡單,要么使用窗口的api通過每個打開的HANDLE並找到你想要的窗口)
  • 使用SendInput發送Alt + D (以獲得焦點到url欄,在Firefox中它將是一個CTRL + L而不是)
  • 使用SendInputjavascript注入來根據需要修改DOM
  • 您也可以使用上面的JS注入功能提交表單 (在所有內容完成之后)。

是的,這是可能的,但你必須在你的應用程序中嵌入一個Web瀏覽器控件,這並不簡單(我認為你不能通過COM在Internet Explorer的外部實例中自動化DHTML)。

我看到你不想使用MFC,這使問題更加復雜化。 也許你可以通過ATL來做到這一點,我建議不要在沒有框架的情況下嘗試這樣做。

如果您可以使用MFC,那么您可以使用CDHtmlDialog表單並訪問底層COM接口以自動執行操作。

在過去,我開發了一個使用HTML作為其用戶界面的MFC應用程序,但我使用了您可以在這里找到的CDHTMLView類: http//www.codeproject.com/Articles/1783/Integrating-DHTML-into-MFC -views

您可以將其作為學習如何處理DHTML事件以及如何使用IWebBrowser2接口的入口點。

你應該看看WebDriver,它能夠完全按照你所描述的那樣做。 有關InternetExplorerDriver內部的詳細信息,請參閱(http://code.google.com/p/selenium/wiki/InternetExplorerDriverInternals)。 即使您無法直接使用該項目,您當然可以瀏覽源代碼以更好地了解您希望如何實現該項目。

你想做的事情沒什么意義。

有許多API可用於將瀏覽器視圖嵌入到您的程序中。 例如,Qt提供此功能。

然后,您可以自己執行HTTP POST請求,並在瀏覽器視圖中顯示您獲得的答案。

這是一個更清潔的解決方案。

專業提示:不要使用Internet Explorer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM