在.NET环境中,开发人员经常需要对Web应用程序进行测试。自动化测试是提高测试效率和准确性的有效手段。本文将介绍如何使用WatiN库来自动化Internet Explorer浏览器,以实现Web应用程序的自动化测试。
WatiN是一个.NET库,用于自动化Web浏览器。它支持Internet Explorer、Firefox和Chrome等浏览器。通过WatiN,开发者可以编写代码来模拟用户在浏览器中的操作,如点击按钮、输入文本等。
在自动化Internet Explorer时,可以使用以下C#代码示例:
using (IE ie = new IE("http://www.google.com"))
{
ie.TextField(Find.ByName("q")).TypeText("WatiN");
ie.Button(Find.ByName("btnG")).Click();
}
这段代码首先打开Google的主页,然后在搜索框中输入"WatiN",最后点击搜索按钮。
测试记录器的诞生是为了满足自动记录网页中的点击和输入操作的需求,从而加快WatiN测试的生成速度。它支持C#、VB.NET和PHP等多种编程语言。用户可以在设置对话框中更改编程语言。
测试记录器是一个嵌入了Web浏览器的应用程序。它的界面设计类似于典型的浏览器,但底部是测试记录器的核心区域。左侧是测试列表,右侧是代码区域。要开始一个新的测试,只需输入测试名称(这将是方法的名称),然后点击"Record"按钮,就可以像正常使用Web页面一样进行操作。导航、点击和按键操作都会生成相应的代码。完成测试后,点击"Stop"按钮。
从这里,用户可以选择将生成的代码复制粘贴到自己喜欢的IDE中,运行代码或编译代码。如果选择了PHP作为编程语言,编译按钮将被禁用。
如果用户点击"Run"或"Compile"按钮,将显示可用的代码模板列表。这些模板是简单的XML文件,存放在templates目录中,可以根据需要进行修改。例如,如果需要测试将数据发送到数据库,可以引用程序集并添加所需的代码。
WatiN中实现的一些方法并不对应简单的鼠标点击或按键操作,例如"Blur"方法。为此,当用户右键单击一个元素时,会打开"Function Explorer"窗口。这是一个特别格式化的HTML页面,它以POST方法将代码返回到窗口和代码框中。
通过这种方式,开发者可以创建自己的函数页面,以便在需要时插入大量代码。函数可以依赖于编程语言和元素。
除了主要的接口之外,下一个重要的基类是"WatinScript"对象。它通过虚拟方法实现了接口模式,并处理了键盘解释、选择列表处理和编译等方法。添加特定代码行的方法由派生的"WatiNVBNET"、"WatiNCSharp"和"WatiNPHP"对象处理。要实现另一种编程语言,需要从"WatinScript"继承,创建一个代码模板,然后创建(或修改)函数以生成适当的代码。
PHP能够通过使用安装包中的COM接口(WatiNCOM.dll)来运行WatiN。这个接口也是免费开源的,可以在recorder网站上找到。该接口试图反映WatiN的大部分功能,但由于PHP中静态方法和重载目前比较困难,因此必须进行一些更改。因此,代码将与可能习惯的略有不同。
$Interface = new COM('WatiN.COMInterface') or die('Cannot create IE object');
$ie = $Interface->CreateIE("http://www.google.com");
$ie->TextField($Interface->FindByName("q"))->TypeText("watin");
$ie->Button($Interface->FindByName("btnG"))->Click();
注意,"CreateIE"是基础COM接口的方法,而不是单独的构造函数。此外,.NET程序集中的静态Find方法也是基础COM接口的方法。Jeroen正在考虑将接口添加到他的核心中,但这可能在未来更远的计划中。
HTML对话框(即使用JavaScript打开的网页,如showModalDialog或showModelessDialog)无法被此应用程序跟踪。它不会触发NewWindow事件,因此无法捕获新浏览器的句柄以供记录器使用。如果是微软的员工或认识微软的员工,并且能够改变这一点,将非常乐意支持。请阅读Microsoft KnowledgeBase文章。