WPF .GetElementById()

4

我正在使用VS2012中的WPF (C#)编程。

我尝试使用以下代码:

如何在WebBrowser控件中单击按钮?

来点击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引用。


1
你正在使用WPF而不是Winforms。该方法在控件的WPF版本中不可用。 - Mark Hall
2个回答

2
你可以使用Windows Forms WebBrowser替代WPF WebBrowser主机在WPF应用程序中的WindowsFormHosted控件中,然后你就可以访问那些成员。

你肯定不需要添加对“System.Windows.Forms”的引用。 - MeTitus
好的,但是当我这样做时,它实际上不是一个System.Windows.Forms.WebBrowser对象,而是System.Windows.Forms.Integration.WindowsFormsHost,我无法对它们执行有用的操作。 - Finchsize
1
我解决问题Xaml:xmlns:my="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" Code behind:System.Windows.Forms.WebBrowser Browser = new System.Windows.Forms.WebBrowser(); windowsFormsHost.Child = Browser; - 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;

}

请添加一些关于您的解决方案如何工作的信息。 - Koopakiller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接