mac上实现selenium web UI自动化测试

背景:

        之前有做过android和ios的UI自动化,工作原因web ui自动化没怎么实践过,但ui自动化大致框架都是类似的,这两天抽空把我们的后台实现了ui自动化,不用每次重构和发布前都手工去过主路径啦。

一、框架选型

        预研了几款web UI自动化框架,其中selenium凭借它的几点优势让我直接选择了它。

        首先,selenium与我做android和ios UI自动化时选择的appium框架类似,写用例无缝衔接直接上手就好,没有学习成本;

        其次,依赖的环境简单,没有appium那么多的包要装;

        第三,selenium虽然与之配套的浏览器和工具最新的更新没那么及时,但旧版本的支持都是现有可用的,特别是selenium IDE支持录制,firefox还有firebug插件可以右键直接获取xpath,特别省时省力,于是就这么愉快的决定啦,玩得飞起~~~

二、环境安装

        1、python2.7 mac 自带,不用装,要装的小伙伴自行百度,so easy ~

        2、selenium

        由于selenium IDE在新版本firefox上并不支持,没有录制功能写起来还是挺费神的,我保守的都选择旧版本。

        如果已经安装了selenium3,需要先卸载;

       查看selenium版本命令:pip show selenium;

        卸载selenium命令:sudo pip uninstall selenium。

        selenium用命令行sudo pip install selenium==2.53.6安装时,由于被墙了,选择下载安装包自行安装,步骤如下:

        a.下载安装包selenium-2.53.6.tar.gz;

        b.将安装包放到python2.7的site-packages目录下,解压,我的目录是/Library/Python/2.7/site-packages/;

        c.cd到上一步解压后的selenium目录下,python setup.py  install,安装完成,查看版本号确认安装成功。

        3、下载安装firefox 40.0版本;

        4、下载selenium_ide-2.9.1-fx.xpi,拖到firefox里面安装好后,firefox右上角多出selenium IDE插件入口;

        5、下载firebug-2.0.16-fx.xpi,拖到firefox里面安装好后,firefox右上角多出firebug插件入口;

        至此,环境安装完成。

三、录制自动化脚本

        点击firefox右上角selenium IDE插件图标,进入selenium IDE主界面;

        1、在下图序号1红框中,输入你要测试的web url;

        2、在下图序号2红框中,调节你要执行用例的速度,一般建议调到中间;

        3、在下图序号3红框中,点击录制按钮开始录制;

        4、在下图序号4红框中,对录制结果进行调节,可以增删改事件、参数;

        5、在下图序号3红框中,点击停止录制按钮停止录制;

        6、在下图序号5红框中,点击按钮开始执行用例;

        7、可以在菜单中选择文件——export test case as——python 2/unittest/web driver,将脚本导出为python,本地编辑直接脚本调用。

四、优化脚本

        上步中最后导出的脚本,只包含了操作,没有包含断言结果判断,也缺少容错,想要持续集成自动生成结果,还需要自己按需补充。

五、jenkins持续集成

        新建一个Jenkins任务,调用python命令执行脚本即可。

六、输出报告

        偷懒直接用了之前做app UI自动化的报告模板HTMLTestRunner.py,这个文件网上到处都能下载,简书我还不会上传文件,就不贴了,贴下测试脚本中需要添加的内容:

import HTMLTestRunner

testunit = unittest.TestSuite()

# 将测试用例加入到测试容器中

testunit.addTest(webuitest("testcaseabc"))

runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='test result', description=u'result:')

runner.run(testunit)

生成的报告挺简单明了,可以自己加log。

————————————

最近深入看selenium的书籍,了解到有selenium grid工具可以实现同一时间不同机器同时执行用例,感觉值得学习,mark下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容