2015-04-03 150 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(); 
       } 
      }} 
相关问题