文/张德申 秦红亮
本文主要介绍了网页测试工具SELENIUM 的配置、选择及使用。结合一个测试案例,介绍了在C#中如何使用SELENIUM,在PHP 中如何使用SELENIUM,并列举了相应代码。最后对SELENIUM 的应用范围进行了总结。
摘 要
择SELENIUM IDE 下载。网页最上面会提示“Firefox 阻止了来自此站点的安装软件的请求”,点击最右边的[ 允许] 按钮 ,使该插件可以在firefox 上可以使用。(很多人认为必须下载后才能安装,实际上在火狐浏览器中,它是被当作插件来使用的)选择确认安装。安装后在附加组件的扩展选项中即可找到安装后的Selenium IDE。在工具菜单中可以找到Selenium IDE 的快捷方式,打开后界面如图1。
3 测试案例现在我们可以使用SELENIUM IDE 了,现在我们假设要自动登录很多博客,并检索上面的内容,知名的博客网站大概有上百个,如果一个一个登陆的话,费时费力,我们可以自动注册,然后自动登录。现在以注册某网站为例介绍SELENIUM 的使用。在录制案例后,我们将实现:除了验证码需要人工识别输入外,其他信息可以自动填入。
(1)打开SELENIUM IDE 点录制按钮开始录制。
(2)登陆到某网站的注册页面,手动输入各项信息。
(3)录入信息后点[ 提交] 按钮。
(4)停止录制。
(5)停止录制后选择source,可以看到生成的HTML 代码段。可以看到生成的HTML 代码段如下(仅列出了主要代码段):<td>type</td><td>username</td><td>desen@sina.com</td>// 此处是输入的用户名,即:desen@sina.com<td>type</td><td>password</td><td>desen001</td>// 此处是输入的密码,即:desen001<td>type</td><td>password2</td><td>desen001</td>// 此处是对输入的密码进行确认,即:desen001<td>type</td><td>nickName</td><td>kind</td>// 此处是输入的昵称,即:kind<td>click</td><td>after</td><td></td>// click 表示单击选择,此处是是否同意条款的选择项<td>click</td><td>//input[@value=' 提交']</td><td></td>// 此处是最后的提交按钮Selenium html 脚本,又称为Selenese,结构清晰简单。上面的HTML Table 由三列构成,我们以输入用户名为例:<td>type</td><td>username</td><td>desen@sina.com</td>
第一列 Selenium command,命令或断言,此处是输入命令。第二列Target of command,命令或断言的目标(target)。这里可以用多种受支持的组件定位符中的一种来指定目标。通常使用的是组件的 ID 或名称,但 XPath 和 DOM 定位符也是受支持的。此处是需要输入用户名:username。
第三列Optional parameter,用于为命令或断言指定参数的值。例如,当使用 type 命令时,__这一列可能就是一个文本域所期望的值。此处是输入一个用户名:desen@sina.com 。
4 与C#配合使用
在选项-[Format] 中,我们选择C#,可以把生成的代码转成C# 代码。生成的C# 代码段如下(下面将对主要代码进行注释):
// 引用Selenium 命名空间,在C# 编程中,这个是必须引用的。
using Selenium;
public void TheUntitledTest()
{// 下面是自动输入相关信息。// 导航到网站的相关页面,这里是注册页面。
selenium.Open("/signup/signupmail.
php?entry=blog");
// 输入用户名
selenium.Type("username", "desen@sina.
com");
// 输入密码
selenium.Type("password", "desen001");
// 确认密码
selenium.Type("password2", "desen001");
// 输入昵称
selenium.Type("nickName", "kind");
// 输入验证码,此处需要在C# 中重新设置
selenium.Type("door", "xvyjy");
// 点击同意条款前面的方框
selenium.Click("after");
// 点击提交按钮
selenium.Click("//input[@value=' 提交']");}
在C# 中可以从SeleniumTests 中调用TheUntitledTest() 函数使用该案例,可以自由设置其中的用户名、密码等参数。这样就可以实现自动注册了。
5 与PHP配合使用
生成的PHP 代码段如下(下面将对主要代码进行注释):
public function testMyTestCase(){$this->open("/signup/signupmail.php?entry=blog");
// 打开注册页面
$this->type("username", "desen@sina.com");// 输入用户名$this->type("password", "desen001");// 输入密码$this->type("password2", "desen001");// 确认密码$this->type("nickName", "kind");// 输入昵称$this->type("door", "xvyjy");// 输入验证码$this->click("after");// 选中候选项$this->click("//input[@value=' 提交']");// 点击提交按钮}在php 的相关代码段引用testMyTestCase() 函数即可使用。
6 小结
上面的C# 与PHP 介绍只是最简单的注册账户案例,实际使用中可以加入其它代码来完善功能,比如登录后浏览并分析网页页面中的信息并保存到相应文件中。如示例所示,SELENIUM 适用于需要重复测试, 测试工作量比较大的场合,可以与其他语言配合使用,增加了它的灵活性。我们也可以在SELENIUM IDE 中直接运行测试案例。
参考文献
[1] 金名言.Web 功能自动化测试工具CubicTest[J]. 电脑知识与技术,2012(9).
[2] 邢伟超, 高晓桐. 网页自动化测试框架的设计与实现[J]. 计算机应用与软件,2012(9).
[3] 杨帆. 基于TestNG 的Web 自动化测试的设计与实现[J]. 软件工程,2009.
作者简介
张德申(1980-),男,北京人,研究生, 现为公安部第一研究所工程师。
秦红亮(1981-),男,北京人,研究生, 现为公安部第一研究所工程师。
作者单位
公安部第一研究所 北京市 100048