连云港市建设银行网站,网站建设的不足,沈阳百度推广排名,个人网页模板关于爱国#x1f525; 交流讨论#xff1a;欢迎加入我们一起学习#xff01; #x1f525; 资源分享#xff1a;耗时200小时精选的「软件测试」资料包 #x1f525; 教程推荐#xff1a;火遍全网的《软件测试》教程 #x1f4e2;欢迎点赞 #x1f44d; 收藏 ⭐留言 #x1… 交流讨论欢迎加入我们一起学习 资源分享耗时200小时精选的「软件测试」资料包 教程推荐火遍全网的《软件测试》教程 欢迎点赞 收藏 ⭐留言 如有错误敬请指正 目前市面上有很多Web UI自动化测试框架比如WatiN, Selinimu,WebDriver还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件模拟用户输入点击等操作实现Web自动化测试。其实这些工具的原理都一样都是通过调用IE COM接口和HTML DOM 对IE浏览器以及WEB测试对象的操作。 本文介绍脱离这些自动化测试框架。 直接使用.NET提供的shdocvm.dll库来操作IE浏览器使用mshtml.dll库来操作IE中的 HTML对象。 优点
通过直接操作IE COM来实现Web自动化能让你在几分钟之内快速建立一个轻量型的自动化测试程序。 大大的提高了测试效率。 也有助于你理解WatiN这些自动化测试框架的运行原理.
添加引用
shdocvm.dll和mshtml.dll这两个库的COM组件名字和他们的dll名字不一样。所以比较难找。
shdocvm.dll 的COM 组件名字叫Microsoft Internet Controls. 添加引用如下Add References-Com Tab- Microsoft Internet Controls mshtml.dll的COM组件名字叫Microsoft.mshtml, 添加引用如下Add References- .NET Tab-Microsoft.mshtml 添加完引用后就可以引用命名空间了 using mshtml;
using SHDocVw; -------------------------------------------------------------------------------------------------------
此处加入mshtml和SHDocVw的介绍来至 http://www.cnblogs.com/liulf/archive/2010/04/26/1721400.html 首先我们看使用的非托管的类库。我们在这里将会使用两个非托管类库mshtml.dll和Interop.SHDocVw.dll。 mshtml是微软IE的核心类库下面是Wiki百科的解释
Trident (also known as MSHTML) is the name of the layout engine for the Microsoft Windows version of Internet Explorer. It was first introduced with the release of Internet Explorer version 4 in October 1997, has been steadily upgraded and remains in use today. For version 7 of Internet Explorer, Microsoft made significant changes to the Trident layout engine to improve compliance with web standards and add support for new technologies. 开发人员可以通过mshtml提供的接口访问到IE布局对象从而达到对Web的控制和检查。 另一个类库Interop.SHDocVw.dll则提供了一个InternetExploer的接口可以帮助我们操纵IE进程并且进行一些简单的如前进后退等操作。
这 两个类库如果装了VS2005都可以找到。mshtml是IE自带的在项目中选择添加引用然后在.net标签下面找到 Microsoft.mshtml就可以找到了。而Interop.SHDocVw要复杂一点添加引用中选择浏览标签然后在下面的路径就可以找 到C:\Program Files\Microsoft Visual Studio 8\Application\PreEmptive Solutions\Dotfuscator Community Edition
-------------------------------------------------------------------------------------------------------- 因此我们可以知道 1. mshtml 也叫Trident, 是微软IE的核心类库,用户可通过mshtml提供的接口访问IE布局对象来对Web进行控制和检查。 2. SHDocVm 提供InternetExploer的接口可操作IE进程和一些对IE的操作如前进后退刷新退出等。
--------------------------------------------------------------------------------------------------------
操作IE
通过shdocvm.dll中的InternetExplorer对象的属性和方法 比如Height,Width。我们能够操作IE以便模拟一些用户的操作比如调整浏览器的大小刷新页面等。 static void Main(string[] args)
{ InternetExplorer IE new InternetExplorer();IE.Visible true;object nil new object();string CnblogUrl http://www.cnblogs.com;// 打开IE并且打开博客园主页IE.Navigate(CnblogUrl, ref nil, ref nil, ref nil, ref nil);Thread.Sleep(3000);// 设置IE左上角的位置IE.Top 10;IE.Left 10;// 设置IE的高度和宽度IE.Height 800;IE.Width 1000;// 导航到百度主页Thread.Sleep(3000);string BaiduUrl http://www.baidu.com;IE.Navigate(BaiduUrl, ref nil, ref nil, ref nil, ref nil);// 点击后退按钮Thread.Sleep(3000);IE.GoBack();// 刷新IEThread.Sleep(3000);IE.Refresh();// 关闭IEThread.Sleep(3000);IE.Quit();
} 使用IE develop toolbar 查看HTML DOM
下节中我们要操作HTML中的元素 我们先需要知道这些控件的id, 使用IE Develop Toolbar或者firebug可以方便查看控件的id.
按F12启动IE Develop Toolbar, 或者点击IE工具栏中的Tools-Develop Tools 从图中可以看到博客园中的搜索textbox的id是q 操作IE中的HTML元素 模拟一个在博客园首页进行搜索的场景。 模拟在文本框中输入数据 然后点击找找看按钮。 我们通过mshtml.dll库里的getElementById()方法获得你要操作的HTML元素的引用。 然后你可以操作这个对象比如输入值和点击它 static void Main(string[] args)
{ InternetExplorer IE new InternetExplorer();IE.Visible true;object nil new object();string CnblogUrl http://www.cnblogs.com;// 打开IE并且打开博客园主页IE.Navigate(CnblogUrl, ref nil, ref nil, ref nil, ref nil);Thread.Sleep(3000);// 获取DOM对象HTMLDocument doc (HTMLDocument)IE.Document;// 博客园主页上的搜索Textbox的id是 qHTMLInputElement SearchTextBox (HTMLInputElement)doc.getElementById(q);SearchTextBox.value 小坦克;// 博客园主页上的找找看按钮的id是btnBloggerSearchHTMLInputElement SearchButton (HTMLInputElement)doc.getElementById(btnBloggerSearch);SearchButton.click();
} 运行效果如下: 源代码下载
点击这里请用VS2008以上打开
以上文章转自自动化测试 (三) Web自动化测试原理 - 小坦克 - 博客园。谢谢该文作者的分享。 在实践的过程中我遇到一个问题IE.Document 无法识别。编译提示如下错误 错误 1 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入 错误 2 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用? 错误 3 找不到编译动态表达式所需的一种或多种类型。是否缺少对 Microsoft.CSharp.dll 和 System.Core.dll 的引用?
该问题可由一下方法解决 用记事本打开专案资料夹里的 *.csproj 找到ItemGroup区段 手动加入 Reference IncludeMicrosoft.CSharp / Reference IncludeSystem.Core / 即可。 最后我邀请你进入我们的【软件测试学习交流群785128166】 大家可以一起探讨交流软件测试共同学习软件测试技术、面试等软件测试方方面面还会有免费直播课收获更多测试技巧我们一起进阶Python自动化测试/测试开发走向高薪之路 作为一个软件测试的过来人我想尽自己最大的努力帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源现在免费分享给大家有需要的小伙伴可以关注【公众号程序员二黑】自提