美文网首页
只需几分钟!建立轻量型自动化测试程序

只需几分钟!建立轻量型自动化测试程序

作者: FrancescoT | 来源:发表于2016-02-02 17:40 被阅读180次

前言:

目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等.  这些框架都可以操作Web中的控件,模拟用户输入,点击等操作,实现Web自动化测试。其实这些工具的原理都一样,都是通过调用IE COM接口和HTML DOM 对IE浏览器以及WEB测试对象的操作。

本文介绍脱离这些自动化测试框架。  直接使用.NET提供的shdocvm.dll库来操作IE浏览器,使用mshtml.dll库来操作IE中的 HTML对象。感谢原作者!

1、优点

通过直接操作IE COM来实现Web自动化,能让你在几分钟之内快速建立一个轻量型的自动化测试程序。 大大的提高了测试效率。 也有助于你理解WatiN这些自动化测试框架的运行原理.

2、添加引用

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;

3、操作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();

// 刷新IE
Thread.Sleep(3000);
IE.Refresh();

// 关闭IE
Thread.Sleep(3000);
IE.Quit();
}

4、使用IE develop toolbar 查看HTML DOM

下节中我们要操作HTML中的元素, 我们先需要知道这些控件的id,  使用IE Develop Toolbar或者firebug可以方便查看控件的id.

按F12启动IE Develop Toolbar, 或者点击IE工具栏中的Tools->Develop Tools

 从图中可以看到博客园中的搜索textbox的id是"q"

5、操作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是 "q"
HTMLInputElement SearchTextBox = (HTMLInputElement)doc.getElementById("q");
SearchTextBox.value = "小坦克";

// 博客园主页上的"找找看"按钮的id是"btnBloggerSearch"
HTMLInputElement SearchButton = (HTMLInputElement)doc.getElementById("btnBloggerSearch");
SearchButton.click();
}

 运行效果如下:

6、源代码下载

点击阅读原文可下载,请用VS2008以上打开

 参考书籍:<.NET Test Automation Recipes>

........................................................

「软件测试的自我修养」每日精选推送,包括且不限于测试方法、技术、工具分享以及测试求职、笔试、面试心得,长按下方二维码关注还可能会偶遇Uncle C为你答疑解惑,随着时间的积累,相信同学们能和公众号一起茁壮成长,追上那个曾经被寄予厚望的自己.

原创撰稿: 小坦克

编辑:XD | 监制:C叔

微信群已满,想进群者,可先加Uncle C的微信,他拉你们进群

相关文章

  • 只需几分钟!建立轻量型自动化测试程序

    前言: 目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有V...

  • 请你说一说app测试的工具

    功能测试自动化 a) 轻量接口自动化测试 jmeter, b) APP UI层面的自动化 android:UI A...

  • 自动化你的测试

    自动化 硬件自动化硬件自动化包括测试夹具,搬移的自动化 软件自动化测试程序的自动化现有测试程序的连接,将已有的需要...

  • SpringCloud 集合Gradle、Consul 部署至D

    自从接触了Docker发现自己已经深深的爱上了它。一个开源的轻量型容器。开发人员只需将应用程序及所依赖的运行环境打...

  • Appium搭建

    1.什么是Appium? Appium 是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iO...

  • 自动化测试优缺点

    一,什么是自动化测试: 首先自动化测试技术,是以程序测试程序,以代码代替思维,以脚本的运行代替手工测试。把以人为驱...

  • 《 Docker开发实践》基础篇读书笔记二

    docker应用场景 1,加速本地开发。 2,自动打包和部署应用 3,创建轻量、私有的PaaS环境 4,自动化测试...

  • web自动化测试

    自动化测试:让程序代替人为去验证程序功能的过程 为什么要进行自动化测试?1. 解决-回归测试2. 解决-压力测试3...

  • 2018-10-17 自动化测试基础

    (1)自动化测试简介 传统自动化测试: 基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行得一种...

  • Selenium

    一、自动化测试简介 1、传统自动化测试:基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行得一种...

网友评论

      本文标题:只需几分钟!建立轻量型自动化测试程序

      本文链接:https://www.haomeiwen.com/subject/nltekttx.html