51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 37369|回复: 118
打印 上一主题 下一主题

Selenium 连续记录【有啥问题可以在这里问,一起讨论】

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-11-12 11:07:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bruce.gu 于 2011-3-27 11:12 编辑

http://seleniumcn.cn  Selenium中文论坛。

刚听到Selenium 这个词的时候好像是去年夏天吧。这里感谢一下Chestin Wang, 好像是他推荐的。
一开始使用selenium 自然会先使用简单的Core 模式,使用IDE 进行一些脚本的录制。然后回放。然后放在Core里面运行。但是用了一段时间之后发现Core越来越有局限性,不能满足自己程序的测试要求了。而且IDE很多东西都是录制不下来的,还有就是很多东西在IDE里面回放正常,但是放在core 里面运行就是有问题。那时候还在想,可能自己不够熟悉它,特别对他的那些命令。所以反复的在那里研究Selenium Reference. 但是后来发现有些问题还是解决不了。然后在 OpenQA 的论坛上发帖(http://clearspace.openqa.org/index.jspa)求助,网上找一样使用Selenium 的人帮助。

[ 本帖最后由 bruce.gu 于 2008-12-5 13:40 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-11-12 11:07:22 | 只看该作者
经过一些时间的研究发现selenium rc 的功能好像强大一点。所以准备转向Selenium RC,好好的研究研究,看到底是怎么样的。(因为光看介绍里面好像吹的很厉害一样的,感觉什么都可以。但是实际上自己用的时候到处都是问题,所以要深入研究研究。)
研究 open source 的东西是比较痛苦的,因为其文档真的是很有限的,而且当时基本没有中文的文档,好像只有IBM网站上有一篇介绍selenium (http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/),还有就是有几个人在网上的几篇翻译的selenium的文档(http://wiki.javascud.org/display/SEL/Home)。
所以其实主要的还是在OpenQA的论坛里面查,看有没有类似的问题人家已经解决的。然后自己拿过来尝试。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-11-12 11:07:45 | 只看该作者
最初的用的东西是Java+Firebug +selenium IDE +selenium rc +eclipse +junit.因为一开始的程序 IDE还是可以录制大部分的,所以把IDE录制的东西修改修改就成了可以跑的 testcase. 而且当时一上来肯定是用junit来跑。

单个可以跑了,那就要考虑多个了,不过这个也简单,junit 本来就有testsuite.这样多个也可以跑了。
可以跑了。 那该考虑跑完后的测试结果了,就是所谓的report了。总不能再Eclipse里面,看一下就没了,不能保存一起。所以又研究。发现junit ant task里面有report 功能。。所以在这个时候引入了ant + junit report 来生成 pdf格式的report.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-11-12 11:08:25 | 只看该作者
好了report 有了,但是运行过程中有问题的话,怎么去debug,怎么去发现哪里出的问题呢。这就需要log.最初看log也就只能在slenium server 的console里面,可以看到出错信息能。selenium server 启动的时候-log 参数记录的东西可读性太差了,不符合要求。所以继续research。。发现有一个人写了一个叫loggingSelenium(http://loggingselenium.sourceforge.net/usage.html) 的东东,拿来一用感觉还不错,每个case可以生成记录selenium 命令的html格式的result了。不过当是不支持assert 命令的记录。其实后来看了它的运行机制就明白了。他记录的是selenium command ,而assert 是junit testcase里面的命令。不过即使assert不能记录也足够用了。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-11-12 11:27:18 | 只看该作者
今天就这些。明天继续。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-11-13 09:45:18 | 只看该作者
好像没人看哦。放到blog里去算了。http://www.51testing.com/?111742
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-11-13 14:29:20 | 只看该作者
好贴

和我的研究轨迹差不多
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-9-20 12:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2008-11-13 17:03:10 | 只看该作者
    我就用的很浅就用了一下IDE.没有这么深哦,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2008-11-13 18:17:53 | 只看该作者
    谁说没人看的  小弟就正在学习中    感谢!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2008-11-13 20:08:31 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2008-11-14 13:21:12 | 只看该作者
    又是一未知领域,见识了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2008-11-14 14:06:25 | 只看该作者
    好了。一些东西都有了,接下去让我们再看看用java写的testcase。selenium 的command是基于html element的locator 的,其实selenium 并不关心element type.一般的selenium 的命令都是command(locator, value) 这样格式的。从这样的命令中我们根本看不出selenium 在对哪个element进行操作。特别是testcase比较长的情况下。可读性很差,导致到时候有问题debug起来也很麻烦。

    还有一个决定因素就是我们的application用的是extjs,里面的widget很多,所以最好的脚本形式是widget.command(),这样形式的。这样可读性强很多。比如 button.click(),textfield.setvalue("abc"),grid.selectRow("afdaf");combobox.selectItem("value"); 但是没执行这样一个命令,对应的selenium命令可能不只一个,而且操作对象可能也不只一个htm element。。所以在这个时候,我们决定封装selenium。首先建立一个对应的widget的库已经对应的一些测试的API.比如Grid 需要的api有selectRow,sortAs,nextPage,prePage等等。。。。然后用selenium command 组合去一一实现他们。这个是我所花时间最多的地方。从今年两三月份到现在一直在不断的添加测试API.其实主要是参考silktest里面提供的一些主要常用的方法的。

    封装好之后我们的脚本就变的很简洁了,比如 homepage.open("www.googel.com");homepage.tfSearch.setText("Selenium");homepage.btnSearch.click();homepage.waitForPageToLoad(10); homepage.assertTextPresent("Selenum");..................
    就是这样tester在看脚本的时候知道selenium在干什么,而且可以和手动的test case的步骤一一对应起来。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2008-11-14 14:07:01 | 只看该作者
    接下来的问题是怎么增加 测试脚本debug的效率。。因为我们现在只有selenium command level 的log(loggingSelenium). 因为我们的tester写的是 element.command 这样的测试脚本。但debug的时候让他去看selenium command level log,也是很麻烦的,因为可能不知道这个element的命令,到底对应哪几个selenium command。所以在这里我们引入了element command level log.就是每个element的action 都添加一个log信息,这个就相对简单了。用了commons-logging + log4j 很容易实现的。

    下面一个问题是要考虑一下代码的维护代价了。把test data 和element locator 放在脚本里面好像不合适。测试脚本不能重用。第二万一UI界面稍微改动导致locator 改动,这样需要去修改所有用到这个element的脚本,那代价也是很高的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2008-11-14 14:07:14 | 只看该作者
    所以用了一个declaration 这个概念,就是你写脚本的时候,要使用控件之前,先在另外的脚本里把这些控件给声明好,在web里主要就是locator。可以是id,name, 或者xpath,其实用的最多的还是xpath,因为ajax的东西很多都是动态生成的。有了declaration 之后,UI界面稍微点位置调整的话,对脚本就影响很小了,只要修改这个declaration 里面的locator.

    另外关于测试数据,很传统的,存在excel文件里面。用key-value 的方式。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
     楼主| 发表于 2008-11-14 14:07:33 | 只看该作者
    待续。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2008-11-16 20:15:37 | 只看该作者
    顶一个先。。。。

            XPATH 怎么看的时候很清楚   到写就不知道怎么写了            继续埋头苦看!!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
     楼主| 发表于 2008-11-21 11:06:18 | 只看该作者
    看一下w3c 的 xpath language ,然后装一个firebug + xpath checker,另外 xpath 在ie里和在firefox里面有些不一样的。有些表达式在ie里不能用,因为ie本身不支持xpath,只是selenium内嵌了一个解析器。

    [ 本帖最后由 bruce.gu 于 2008-11-21 11:08 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2008-11-21 11:14:19 | 只看该作者
    原帖由 bruce.gu 于 2008-11-14 14:07 发表
    所以用了一个declaration 这个概念,就是你写脚本的时候,要使用控件之前,先在另外的脚本里把这些控件给声明好,在web里主要就是locator。可以是id,name, 或者xpath,其实用的最多的还是xpath,因为ajax的东西很多都 ...


    接下去该考虑所谓的并行测试了。就是同是跑多个测试线程。这里就是引入 testng和selenium grid 的时候了。
    由于junit 本身不支持parallel 所以,当时就把junit去掉改用testng来跑test了。另外selenium grid也不难,不需要他安装包里面那么多东西,只要selenium-grid-hub-standalone-1.0.2 , selenium-grid-remote-control-standalone-1.0.2 和 grid_configuration.yml 和原先的selenium server放一起。然后改一下它的build文件就ok了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2008-11-24 13:55:46 | 只看该作者
    顶个先  
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2008-11-26 11:40:07 | 只看该作者
    但是多线程就会引起 log日志混乱。各个线程的全都交错在一起,debug起来太麻烦了。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-5-3 04:46 , Processed in 0.080044 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表