2013-03-29 28 views
3

在VS2012WPF .GetElementById()

進出口編程WPF(C#)

我試圖用這樣的:

How do you click a button in a webbrowser control?

要點擊網頁瀏覽器按鈕,但

  1. .GetElementById給我一個錯誤。

    我加:using System.Windows.Forms;並組裝它們,但它不會改變我的任何東西。

  2. 我想我要去有這個問題還有:.InvokeMember("click");

所有我已經在網絡上發現的是:

http://www.telerik.com/help/wpf/m_telerik_windows_documents_formatproviders_html_parsing_dom_idocument_getelementbyid.html

但我不我確切地知道如何將它組裝到VS2012,bcus在VS2012中沒有構建API參考。

+1

您正在使用WPF沒有的WinForms這種方法是不是在[WPF版]可用(http://msdn.microsoft.com/en-us/library/system.windows.controls.webbrowser.aspx)的控制。 –

回答

2

您可以在WPF應用程序的WindowsFormHosted控件中使用Windows窗體WebBrowser而不是WPF WebBrowser主機,然後可以訪問這些成員。

+0

您當然不需要添加對「System.Windows.Forms」的引用 – Marco

+0

好的,但是當我這樣做時它實際上不是System.Windows.Forms.WebBrowser對象的System.Windows.Forms.Integration.WindowsFormsHost和其實,我不能做有用的東西與他們 – Finchsize

+1

我解決問題 的XAML: 的xmlns:我= 「CLR的命名空間:System.Windows.Forms.Integration;裝配= WindowsFormsIntegration程序」 代碼背後: System.Windows。 Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser(); windowsFormsHost.Child =瀏覽器; – Finchsize

0
// reference : 
/// https://gist.github.com/sphingu/5781036 
---------------------------------------------------- 
// Using WebBrowser for Crowling in WPF 
---------------------------------------------------- 
<WebBrowser Cursor="Arrow" Name="MyBrowser" LoadCompleted="MyBrowser_OnLoadCompleted" /> 
---------------------------------------------------- 
// useful methods of WebBrowser 
---------------------------------------------------- 
MyBrowser.Navigate(new Uri("http://google.com")); 

private void MyBrowser_OnLoadCompleted(object sender,NavigationEventArgs e) 
{ 
     ... 
     // return source of loaded page in WebBrowser 
     var document=(IHTMLDocument3) MyBrowser.Document; 

     //Get Element and set its value 
     document.getElementById("userName").setAttribute("value","myusername"); 

     //get Button on page and fire its click event 
     document.getElementById("btnSubmit").click(); 

     // Invoke javascript function on page loaded on WebBrowser 
     MyBrowser.InvokeScript("submitform",param1,param2,...); 

     //get data from table in page 
     _innerHtmldata = 
       ((IHTMLDocument3) MyBrowser.Document).getElementById("datatable") 
                .innerHTML; 

} 
+0

請添加一些關於您的解決方案如何工作的信息。 – Koopakiller