2015-04-03 149 views
0

有沒有一種方法可以在標準的WebBrowser或Awesomium WebControl中顯示WPF應用程序內的網頁,然後控制它。例如,我想加載google.com,在搜索中輸入內容並點擊搜索。我設法使用WebBrowser獲取網頁源代碼,但我無法修改搜索文本框的值。有沒有其他辦法可以做到這一點WPF WebBrowser或Awesomium WebControl - 以及如何控制顯示的網頁

載入頁面這樣的:

//private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) 
     //{ 
     // this.MyPage.Navigate("http://www.google.com"); 
     //} 

獲取HTML這樣的:

//private void MyPage_OnLoadCompleted(object sender, NavigationEventArgs e) 
     //{ 
     // dynamic doc = MyPage.Document; 
     // dynamic htmlText = doc.documentElement.InnerHtml; 
     // string htmlstring = htmlText; 
      //bool search = htmlstring.Contains("lst-ib"); 
      //var dom = MyPage.Document as HTMLDocument; 
      //if (dom != null) 
      //{ 
      // var ec = dom.getElementById("lst-ib"); 
      // SOMETHING TO ACCESS VALUE OF lst-ib AND CLICK SEARCH 

      //} 
      //} 

我是不是能夠得到HTML與awesomium,也可以沒有找到關於如何去做的任何事情,所以每一個幫助都是值得讚賞的。

+1

是的,這是可能的。如果您託管System.Windows.Control(webbrowser),那麼您必須使用MSHTML訪問DOM並對其進行操作。這是相當複雜的,但可以完成。查找關於MSHTML的(少量)文檔,並準備閱讀有關C++接口的信息。另一方面,System.Windows.Forms(webbrowser)具有更好的C#用戶界面,您可能需要查看它的HTMLDocument以供進一步查看。我不太瞭解awesomium。 – 2015-04-03 17:55:44

+0

我設法弄清楚了,謝謝;) – 2015-04-10 13:53:08

回答

0

我是這樣做的。希望它可以幫助別人

var htmlDoc = ((MainWindow)Application.Current.MainWindow).webControl.Document as HTMLDocument; 
     if (htmlDoc != null) 
     { 
      var userid = htmlDoc.getElementById("userid") as HTMLInputElement; 
      var apikey = htmlDoc.getElementById("apikey") as HTMLInputElement; 
      if (userid != null && apikey != null) 
      { 
       userid.value = ((MainWindow)Application.Current.MainWindow).tbxApi.Text; 
       apikey.value = ((MainWindow)Application.Current.MainWindow).tbxVcode.Text; 

       var login = htmlDoc.getElementById("login") as HTMLFormElement; 
       if (login != null) 
       { 
        login.submit(); 
       } 
      }} 
相關問題