查看: 5289|回复: 3

[笔记] Selenium学习笔记2

[复制链接]
论坛徽章:
0
跳转到指定楼层
1#
发表于 2009-4-18 10:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近准备用Selenium自动化录制测试脚本,稍微总结一下。
Selenium的主页是http://seleniumhq.org
Selenium包括很多组件,其中我现在用的是Selenium RC和Selenium IDE。Selenium IDE是Firefox的一个插件,我们可以使用它录制页面操作。
Selenium IDE安装完毕之后,可以从工具菜单中激活,然后我们就可以在firefox中访问需要测试的网页,进行各种页面操作,Selenium IDE在这个过程中会记录我们的页面控件和动作。完成录制之后,Selenium IDE生成一个HTML文件保存脚本,比如
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  4. <head profile="http://selenium-ide.openqa.org/profiles/test-case">
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. <link rel="selenium.base" href="http://www.baidu.com/" />
  7. <title>baidu</title>
  8. </head>
  9. <body>
  10. <table cellpadding="1" cellspacing="1" border="1">
  11. <thead>
  12. <tr><td rowspan="1" colspan="3">baidu</td></tr>
  13. </thead><tbody>
  14. <tr>
  15.         <td>open</td>
  16.         <td>/</td>
  17.         <td></td>
  18. </tr>
  19. <tr>
  20.         <td>type</td>
  21.         <td>kw</td>
  22.         <td>ckword</td>
  23. </tr>
  24. <tr>
  25.         <td>clickAndWait</td>
  26.         <td>sb</td>
  27.         <td></td>
  28. </tr>
  29. </tbody></table>
  30. </body>
  31. </html>
复制代码



我们可以导出成Java文件,比如:
  1. package com.example.tests;

  2. import com.thoughtworks.selenium.*;
  3. import java.util.regex.Pattern;

  4. public class NewTest extends SeleneseTestCase {
  5.         public void setUp() throws Exception {
  6.                 setUp("http://www.baidu.com/", "*chrome");
  7.         }
  8.         public void testNew() throws Exception {
  9.                 selenium.open("/");
  10.                 selenium.type("kw", "ckword");
  11.                 selenium.click("sb");
  12.                 selenium.waitForPageToLoad("30000");
  13.         }
  14. }
复制代码
只要导入相应的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驱动。

原文 http://www.ckword.com/blog/?p=36
论坛徽章:
97
金牌徽章
日期:2012-11-02 21:26:26金牌徽章
日期:2012-09-29 08:41:30金牌徽章
日期:2010-08-08 06:14:41金牌徽章
日期:2012-11-02 21:26:26金牌徽章
日期:2012-10-26 18:27:11金牌徽章
日期:2012-10-26 18:27:11金牌徽章
日期:2012-10-26 18:27:10金牌徽章
日期:2012-09-29 09:25:54金牌徽章
日期:2012-10-06 09:41:18金牌徽章
日期:2012-11-02 21:26:26
2#
发表于 2009-4-19 19:44 | 只看该作者
是个免费的工具?

使用道具 举报

回复
论坛徽章:
0
3#
发表于 2009-4-21 19:54 | 只看该作者

回复 #2 MJSHOW 的帖子

是的 挺好用 我最近正在学习

使用道具 举报

回复
论坛徽章:
184
BLOG每周发帖之星
日期:2011-05-22 01:35:42BLOG每周发帖之星
日期:2011-05-29 01:35:49BLOG每周发帖之星
日期:2011-06-05 01:35:36BLOG每周发帖之星
日期:2011-06-12 01:35:49BLOG每周发帖之星
日期:2011-06-19 01:35:29BLOG每周发帖之星
日期:2011-06-26 01:35:45BLOG每日发帖之星
日期:2011-05-15 01:01:01BLOG每日发帖之星
日期:2011-05-06 01:01:01BLOG每日发帖之星
日期:2011-05-18 01:01:01BLOG每日发帖之星
日期:2011-05-07 01:01:02
4#
发表于 2009-4-21 20:55 | 只看该作者
谢谢分享

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表