51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1394|回复: 1
打印 上一主题 下一主题

Selenium的学习

[复制链接]
  • TA的每日心情
    无聊
    2024-9-27 10:07
  • 签到天数: 62 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2018-2-7 14:59:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          介绍下学习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启动浏览器?官网教程有例子:


         以上只需要把谷歌改成百度。把定位语句里的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搞定。


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-24 01:29 , Processed in 0.065527 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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