我在 VS2012 中的 WPF (C#) 中编程
我试着用这个:
单击网络浏览器上的按钮,但
.GetElementById
给我一个错误。我补充说:
using System.Windows.Forms;
并组装它们,但它对我没有任何改变。我想我也会有这个问题:
.InvokeMember("click");
我在网上找到的只是:
但我不知道如何将它组装到 VS2012,因为 VS2012 中没有内置 API 引用。
我在 VS2012 中的 WPF (C#) 中编程
我试着用这个:
单击网络浏览器上的按钮,但
.GetElementById
给我一个错误。
我补充说:using System.Windows.Forms;
并组装它们,但它对我没有任何改变。
我想我也会有这个问题:.InvokeMember("click");
我在网上找到的只是:
但我不知道如何将它组装到 VS2012,因为 VS2012 中没有内置 API 引用。
您可以在 WPF 应用程序的 WindowsFormHosted 控件中使用 Windows 窗体 WebBrowser 而不是 WPF WebBrowser 主机,然后您可以访问这些成员。
// 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;
}