【学习笔记】用C#写Web自动化测试框架【2】-- 启动IE
2008-03-11 14:47
375 查看
问题:如何启动IE浏览器,并设法获取这个实例从而可以操纵IE浏览器。
设计:通过System.Diagnostics命名空间里的Process.Start()静态方法启动IE进程。然后实例化一个InternetExplorer对象并获取这个对象的句柄。
代码:
string IELocation = @"%ProgramFiles%Internet Exploreriexplore.exe";
IELocation = System.Environment.ExpandEnvironmentVariables(IELocation);
Console.WriteLine("Launching IE ");
Process p = Process.Start(IELocation, "about:blank");
Thread.Sleep(3000);
Console.WriteLine("Attaching to IE ... ");
InternetExplorer ie = null;
if (p != null)
{
Console.WriteLine("Process handle is: " + p.MainWindowHandle.ToString());
SHDocVw.ShellWindows allBrowsers = new ShellWindows();
Console.WriteLine("Number of active IEs :" + allBrowsers.Count.ToString());
if (allBrowsers.Count != 0)
{
for (int i = 0; i < allBrowsers.Count; i++)
{
InternetExplorer e = (InternetExplorer)allBrowsers.Item(i);
if (e.HWND == (int)p.MainWindowHandle)
{
ie = e;
break;
}
}
}
else
throw new Exception("Faul to find IE");
}
else
throw new Exception("Fail to launch IE");
注释:
首先定义了一个变量IELocation用来存储系统中IE所在的路径。System.Environment.ExpandEnvironmentVariables这个函数用来把字符串中的环境变量转化为相应的值。这里用到了%ProgramFiles%,你可以打开一个cmd窗口输入echo %ProgramFiles%来查看这个环境变量的值。比如在我的机器中他就是这样C:/Program Files。这样做的好处是可以在任何机器上运行,即便你的ie所在路径不是C盘。
然后用到了Process.Start()这个函数。第一个参数为需启动进程的应用程序路径,第二个是所带的参数。相当于你在cmd中敲"%ProgramFiles%/Internet Explorer/iexplore.exe" about:blank就会打开一个空白页的IE窗口。
到这里,我们已经可以成功的启动一个IE浏览器了。甚至我们可以在上述方法的把第二个参数改成一个相应的网址,比如www.baidu.com。应用程序便会直接打开百度的主页。看上去我们的工作完成一大半了,其实则不然。我们还要想办法获取这个刚刚启动的IE浏览器,以便对他进行更多的操作。
因此,我们通过shdocvw.dll中的ShellWindows()方法获取所有实例化并取回所有活动的浏览器对象的一个集合。这个集合中包括了刚才打开的IE窗口,也包括之前启动的IE窗口和所有打开的Windows Explorer浏览器。因此我们需要遍历这个集合,通过比较刚才所启动进程的句柄,来获取我们需要的IE窗口。比较时要注意Process里面的MainWindowHandle属性是IntPtr类型的,因此要把它转化成int型再与InternetExplore的句柄进行比较。
至此,我们才真正的打开了一个IE浏览器,并获取到了这个IE。接下来就可以调用InternetExplore中的实例方法来操作这个IE实例了,比如打开一个网页:
object o = null;
ie.Navigate("www.kunboo.cn", ref o, ref o, ref o, ref o);
相对应的一些最基本的操作GoForward,GoBack,Refresh等等都包含在了这个类的方法中,基本的操作就可以进行了。
这节的内容就差不多了,下次来介绍怎样判断web程序完全加载到浏览器。
PS推荐一本好书《.Net软件测试自动化之道》,太经典了!
设计:通过System.Diagnostics命名空间里的Process.Start()静态方法启动IE进程。然后实例化一个InternetExplorer对象并获取这个对象的句柄。
代码:
string IELocation = @"%ProgramFiles%Internet Exploreriexplore.exe";
IELocation = System.Environment.ExpandEnvironmentVariables(IELocation);
Console.WriteLine("Launching IE ");
Process p = Process.Start(IELocation, "about:blank");
Thread.Sleep(3000);
Console.WriteLine("Attaching to IE ... ");
InternetExplorer ie = null;
if (p != null)
{
Console.WriteLine("Process handle is: " + p.MainWindowHandle.ToString());
SHDocVw.ShellWindows allBrowsers = new ShellWindows();
Console.WriteLine("Number of active IEs :" + allBrowsers.Count.ToString());
if (allBrowsers.Count != 0)
{
for (int i = 0; i < allBrowsers.Count; i++)
{
InternetExplorer e = (InternetExplorer)allBrowsers.Item(i);
if (e.HWND == (int)p.MainWindowHandle)
{
ie = e;
break;
}
}
}
else
throw new Exception("Faul to find IE");
}
else
throw new Exception("Fail to launch IE");
注释:
首先定义了一个变量IELocation用来存储系统中IE所在的路径。System.Environment.ExpandEnvironmentVariables这个函数用来把字符串中的环境变量转化为相应的值。这里用到了%ProgramFiles%,你可以打开一个cmd窗口输入echo %ProgramFiles%来查看这个环境变量的值。比如在我的机器中他就是这样C:/Program Files。这样做的好处是可以在任何机器上运行,即便你的ie所在路径不是C盘。
然后用到了Process.Start()这个函数。第一个参数为需启动进程的应用程序路径,第二个是所带的参数。相当于你在cmd中敲"%ProgramFiles%/Internet Explorer/iexplore.exe" about:blank就会打开一个空白页的IE窗口。
到这里,我们已经可以成功的启动一个IE浏览器了。甚至我们可以在上述方法的把第二个参数改成一个相应的网址,比如www.baidu.com。应用程序便会直接打开百度的主页。看上去我们的工作完成一大半了,其实则不然。我们还要想办法获取这个刚刚启动的IE浏览器,以便对他进行更多的操作。
因此,我们通过shdocvw.dll中的ShellWindows()方法获取所有实例化并取回所有活动的浏览器对象的一个集合。这个集合中包括了刚才打开的IE窗口,也包括之前启动的IE窗口和所有打开的Windows Explorer浏览器。因此我们需要遍历这个集合,通过比较刚才所启动进程的句柄,来获取我们需要的IE窗口。比较时要注意Process里面的MainWindowHandle属性是IntPtr类型的,因此要把它转化成int型再与InternetExplore的句柄进行比较。
至此,我们才真正的打开了一个IE浏览器,并获取到了这个IE。接下来就可以调用InternetExplore中的实例方法来操作这个IE实例了,比如打开一个网页:
object o = null;
ie.Navigate("www.kunboo.cn", ref o, ref o, ref o, ref o);
相对应的一些最基本的操作GoForward,GoBack,Refresh等等都包含在了这个类的方法中,基本的操作就可以进行了。
这节的内容就差不多了,下次来介绍怎样判断web程序完全加载到浏览器。
PS推荐一本好书《.Net软件测试自动化之道》,太经典了!
相关文章推荐
- 【学习笔记】用C#写Web自动化测试框架【2】-- 启动IE
- C#学习笔记 IEquatable<T> 接口 IEqualityComparer<T> 接口
- SQLServer\framework启动报异常:Module的类型初始值设定项引发异常 [转]QQ空间、新浪微博、腾讯微博等一键分享API链接代码 window下 mongodb快速安装 数据表查询所有子/父节点 C#学习笔记1
- [关于OPC的研究1]c# opc client源码调试和学习笔记
- CLR_Via_C#学习笔记之事件
- 操作系统学习笔记(1)--软驱启动
- C#学习笔记之三:数组
- XMPP协议学习笔记四(Openfire服务器启动过程)
- c#中开发ActiveX的学习笔记【转】
- C#设计模式学习笔记-单例模式
- c# 学习笔记(三)
- 2014年暑假c#学习笔记目录
- Java学习笔记72. 操作线程 -- 判断线程是否启动
- 【学习笔记】启动图 launchImage
- C# Hadoop学习笔记(一)—环境安装
- C# 学习笔记 -- 第六天 正规表达式
- C#设计模式学习笔记-单例模式
- 黑马程序员_学习笔记 03 C#基础
- C#学习笔记
- Android应用开发学习笔记之启动另外一个Activity