51Testing软件测试论坛

标题: Selenium的学习 [打印本页]

作者: 海鸥一飞    时间: 2018-2-7 14:59
标题: Selenium的学习
      介绍下学习selenium的经验。之前有网友要求我给布置作业,那么我整理一下就全部列在这里。
每一步给出一个小题目。
      selenium是一个比较古老也比较流行的自动化测试库。他的特点是,版本较多,以至于在网上搜
到很多教程都是过时的。



      一、Selenium的家族成员
     Selenium1:最老的,基于javscript实现的自动化测试框架。新项目上已经没什么人会选择这个
了。又叫Selenium RC。
     Selenium2:又叫Selenium Webdriver。从这里开始selenium和webdriver两个开源项目合并了。

     Selenium3:2的后续。3和2有一些细微的不同。值得一提的是,Selenium2里firefox浏览器的
driver不需要单独下载什么东西,直接能用。而到了3需要下载geckodriver才能用。这也是为什
么你按照2的教程做会报错。“geckodriver executable needs to be in path” 这个错误是日常问题。
SeleniumIDE:录制回放工具,不用学。

     SeleniumGrid:分布式执行selenium的框架。坑多效率低。初学者不用看。
     Webdriver:对每个浏览器,有一个本地driver用来驱动他。这个所谓本地driver可能是一个独
立的exe文件。


      二、糟糕的官方教程

      Selenium的官方网站和老版官方教程,让人摸不着头脑。但是,现在有新的官方教程了:
http://seleniumhq.github.io/docs/ 也可以从selenium的github readme文件里进入。这个教程简洁
多了。
     但是,这个教程最大的问题是,有的地方用python,有的地方用java,有的地方又用ruby,令人
无所适从。稍后我会整理一下其中python系需要的部分。而java系以前就有一本很好的selenium testing
tools cookbook.



      三、从写一个最简单的脚本开始

     这里假设你已经顺利搭建了selenium的开发环境和已经初步掌握python的unit test库。
首先,不用unittest库,只用纯python+selenium尝试编写一个脚本。用selenium打开浏览器,进入一
个网站比如百度,去搜索某个关键字,比如搜一下selenium。
不知道怎么用selenium启动浏览器?官网教程有例子:
[attach]110686[/attach]

     以上只需要把谷歌改成百度。把定位语句里的id改一改。再把搜索关键字改一改。

     四、给这个脚本加上断言

需要给一个脚本加上assert断言,这个脚本才能变成一个测试脚本。也就是在执行后知道结果是成果还
是失败。

     五、把这个脚本放到unittest里执行
至此,一个最最简单的测试脚本完成了。

     六、安装firebug,firepath
做复杂的脚本之前,先安装firebug和firepath。这是两个firefox插件。可以帮助你在前期快速写出xpath
定位语句。

     七、挑战一个教复杂的脚本
自己设计一个较复杂的测试场景,并用脚本实现。比如,打开豆瓣电影,测一下前5本电影的片名和导
演名字。(预期结果可以写在某个文本文件里或直接写死在脚本里。)这个可以尝试改写成数据驱动
形式的测试用例。

     八、重构这个脚本,使用页面对象模式

上面做的脚本太长,而且非常不好维护,完全无法重用。所以才会有页面对象这种专门给selenium搞
的设计模式。但是我不确定你能不能在网上找到python实现的例子,java的倒是很多。我之前也做过
一个http://github.com/zhangting85/simpleWebtest 是我在某个公司写的框架的简化版。并且写了好
多篇对应的博客来介绍我当时是怎么写的。但同样的问题就是这些教程很容易过时。时隔三四年,
这样的一个小框架很有可能有各种问题。所以也只能当作参考。有空我可能把它重写成python的。

     九、试试把unittest换成RobotFramework
robotframework是一个关键字驱动测试框架。这一步并不是说robotframework就比unittest高级,
但读者可以试试用robot。这个框架还是有一定程度上的优点的,也有缺点。


     至此,如果这些小题目都完成了,那基本上就算入门了。在写这篇文章的时候,顺便找了一圈
python的selenium资料,可惜没看到比较好的。有空我再写点吧。


     遇到问题了?不懂怎么定位元素的,请看w3c school里的xpath教程。并结合使用firepath工具。

     元素怎么也定位不到?

     1.看有没有frame,2.尝试actions操作,3.让selenium调用原生js搞定。



作者: 梦想家    时间: 2018-5-14 16:53





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2