首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Selenium学习札记2

2012-11-23 
Selenium学习笔记2最近准备用Selenium自动化录制测试脚本,稍微总结一下。Selenium的主页是http://seleniumh

Selenium学习笔记2

最近准备用Selenium自动化录制测试脚本,稍微总结一下。

Selenium的主页是http://seleniumhq.org

Selenium包括很多组件,其中我现在用的是Selenium RC和Selenium IDE。Selenium IDE是Firefox的一个插件,我们可以使用它录制页面操作。

Selenium IDE安装完毕之后,可以从工具菜单中激活,然后我们就可以在firefox中访问需要测试的网页,进行各种页面操作,Selenium IDE在这个过程中会记录我们的页面控件和动作。完成录制之后,Selenium IDE生成一个HTML文件保存脚本,比如:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head profile="http://selenium-ide.openqa.org/profiles/test-case"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="selenium.base" href="http://www.baidu.com/" /><title>baidu</title></head><body><table cellpadding="1" cellspacing="1" border="1"><thead><tr><td rowspan="1" colspan="3">baidu</td></tr></thead><tbody><tr><td>open</td><td>/</td><td></td></tr><tr><td>type</td><td>kw</td><td>ckword</td></tr><tr><td>clickAndWait</td><td>sb</td><td></td></tr></tbody></table></body></html>

我们可以导出成Java文件,比如:

package com.example.tests;import com.thoughtworks.selenium.*;import java.util.regex.Pattern;public class NewTest extends SeleneseTestCase {public void setUp() throws Exception {setUp("http://www.baidu.com/", "*chrome");}public void testNew() throws Exception {selenium.open("/");selenium.type("kw", "ckword");selenium.click("sb");selenium.waitForPageToLoad("30000");}}
只要导入相应的selenium和Junit包就可运行。

有一点需要注意的是在回放脚本时,应该添加setSpeed方法,参数是ms,因为Selenium IDE虽然可以选择回放速度(慢——中——快),但实际上即使选择慢速,Selenium IDE仍然运行的有些快,导致其在顺序执行用户操作时,可以发生没等到页面加载完毕就执行下一个命令的现象,导致下一个命令找不到响应的页面控件。除了setSpeed之外,Selenium IDE还可以添加大量的命令。具体见Selenium IDE界面。

另外一个关键是如何识别页面控件。自动化的核心是录制的控件识别方法可以复用,Selenium IDE支持的识别格式包括ID、Name、XPath:attributes、DOM index和XPath:position,而且允许正则表达式,所以非常灵活,根据我使用的情况来看,对于富客户端应用,控件ID通常都增加了一个随机数,不适合做识别,Name还不错,但是如何这个控件Name带有版本信息,比如控件在不断升级,从1.3升到1.4,那么Name可以会失效,要小心。XPath:position我用的最多,也觉得定位最准。但是Selenium IDE有时抓不到某些操作,比如,可以某一个Logout链接,是由span来实现的,此时Selenium IDE抓不到,此时可以XPath:attributes识别,这样写://span[text()='Log out'],搞定。

对于Selenium IDE,还有很多细节需要学习,比如正则表达式的应用,如何写出通用的识别方法,等等。我准备使用Selenium IDE录制脚本,然后导出成java文件,做一些修改之后用Selenium RC驱动。

热点排行