4

我在 VS2012 中的 WPF (C#) 中编程

我试着用这个:

如何单击 webbrowser 控件中的按钮?

单击网络浏览器上的按钮,但

  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,因为 VS2012 中没有内置 API 引用。

4

2 回答 2

2

您可以在 WPF 应用程序的 WindowsFormHosted 控件中使用 Windows 窗体 WebBrowser 而不是 WPF WebBrowser 主机,然后您可以访问这些成员。

于 2013-03-30T00:03:32.330 回答
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;

}
于 2014-03-27T12:52:46.007 回答