C# 执行 JavaScript 脚本是非常常见的需求,下面是执行 JavaScript 脚本的方法步骤:
1. 引入COM组件
首先需要引入COM组件“Microsoft Internet Controls”。在Visual Studio的项目中点开Solution Explorer,右键References -> Add Reference...,在Add Reference对话框中选择COM页签,找到Microsoft Internet Controls,确认添加。
2. 创建IE浏览器对象
接下来就是需要创建IE浏览器对象 -- 用Process类在后台启动IE进程,并且创建一个新的IE浏览器对象。
using System.Diagnostics;
using SHDocVw;
using mshtml;
public void CreateBrowserObject()
{
Process p = new Process();
p.StartInfo.FileName = "iexplore";//使用IE浏览器
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//隐藏窗口
p.Start();//启动IE进程
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass(); // 创建ShellWindows对象
foreach (SHDocVw.InternetExplorer explorer in shellWindows)
{
if (explorer.LocationURL.Contains("about:blank"))
{
this.browser = explorer;
break;
}
}
}
3.执行JavaScript脚本
成功创建了IE浏览器对象后,就可以使用IHTMLWindow2接口的execScript方法执行脚本了。此接口提供了执行脚本的基本支持,为JavaScript脚本提供了一个运行环境。
public string ExecJavaScript(string script)
{
IHTMLWindow2 window = (IHTMLWindow2)browser.Document.parentWindow;
try
{
object r = window.execScript(script, "JavaScript");
return r == null ? "" : r.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
示例1:获取网页标题
CreateBrowserObject();
this.browser.Navigate("http://www.qq.com");//访问QQ网站
while (this.browser.Busy)
{
System.Threading.Thread.Sleep(1000); //等待IE加载页面完成
}
string title = ExecJavaScript("document.title"); //执行JS脚本获取页面Title
Console.Write(title);
示例2:打印页面所有的链接URL
CreateBrowserObject();
this.browser.Navigate("http://www.baidu.com");//访问百度网站
while (this.browser.Busy)
{
System.Threading.Thread.Sleep(1000); //等待IE加载页面完成
}
IHTMLDocument2 doc = (IHTMLDocument2)browser.Document;
IHTMLElementCollection links = doc.links; //获取页面链接标签集合
for (int i = 0; i < links.length; i++)
{
IHTMLElement link = (IHTMLElement)links.item(i, 0); //获取某一个链接标签
Console.Write(link.getAttribute("href")); //获取链接地址
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 执行Javascript脚本的方法步骤 - Python技术站