通用UI自动化测试框架设计(web端)

UI自动化测试框架 同时被 3 个专栏收录
2 篇文章 1 订阅
19 篇文章 0 订阅
22 篇文章 0 订阅

写过UI自动化测试脚本的朋友,相信都会遇到过,比如前端页面元素改了,又需要去改自己写的脚本,而且只能针对某个web页面的定制化设计,换个web项目就不灵了。

我就在考虑,为什么UI自动化框架就不能通用在不同的系统呢?然后针对这个,设计了现在的UI自动化测试框架,实现了简单的通用,每次只需要维护好用例就行了,维护成本降低。

大家都知道,基于selenium函数,对页面元素的操作,很多都是点击、输入参数、处理iframe、处理alert、下拉框动作这几类,然后语法基本是固定的。那是不是可以针对这个情况,对操作类型进行一个封装,不管你要做什么操作,经过判断调用对应的方法就好了。

相信说到这里,大家也有自己的思路了。废话不多说,直接上主程序的流程图。

主流程图如上。

然后开始选择函数。

首先,我们需要想好,用例以什么形式存储,读取用例用什么函数,我这里采用excel形式存储用例,使用pandas操作用例。

然后想好支持什么浏览器,浏览器基本就是火狐,谷歌,IE,苹果浏览器。这里选择火狐,50+版本以上。想支持多个浏览器,可以多封装几个函数。

再次确定使用什么语言,那个版本的selenium,这里选用python3.6,selenium3。用例参数选用map形式的字典。

最后设计好用例,必须包含基本要素。

用例设计如下图:

框架概览:

基本介绍就到这,欢迎到资源中心下载源码,附带使用说明哦。

顺便推广下一个测试公益社群,欢迎进群交流,在深圳站分群等你哦。

VIPTEST社群简介:

  1. VIPTEST社群(简称V社)是由一群热心的测试行业志愿者自发组织形成的开放性测试同业联盟。社群网站:www.viptest.net

  2. 社群通过线上数百个有组织有规划的微信,QQ群,以及基于问答和分享的互动网站,打通人脉和技术交流壁垒,把不同层次的测试从业者,企业,平台连接在一起,进行充分的技术交流和技术互助,打破信息屏障。同时,社群又发展了V-Share(线上V咖分享会),V-Salon(线下沙龙),V-Chat(线下闭门论坛)等公益活动品牌,将这种连接进一步变成融合,推动测试行业发展。

  3. VIPTEST社群以公益、共享、互助、生态为发展理念,不拘泥于传统,通过多层次的组织,以更丰富、更有新意、更多元化的互动形式将整个测试行业紧密连接在一起。

  4. 目前社群成员20000+,遍布全国7个大区,25个城市,覆盖5000+企业测试团队,并设有东南亚和北美分社,已经初具规模。社群成员组成有72%来自于互联网企业,有19%来自于传统企业,9%来自于其他企业,院校或组织。

  5. 社群愿景:我们致力于打造中国规模最大,覆盖面最广的纯公益测试社群。

VIPTEST互联网测试开发社群公约:

  1. 进群后为方便认识交流,请第一时间修改群昵称,格式:公司-姓名-岗位。交流互动从修改群昵称开始,我们会定期清理不修改群昵称人员。

  2. 入群要求:①全国地区️测试行业的功能测试、性能测试、自动化测试、测试开发、安全测试、测试顾问、质量管理、测试总监等人员,欢迎邀请符合条件人员加入。

  3. ️进群后没有与别人沟通熟悉之前,不要随意乱加别人微信,我们有严格的监控体系,一旦发生立即会在所有群清除此类人,且不得再加入社群。

  4. 公益社群靠大家自觉维护群秩序,群内不准乱发广告,我们会定期清理不合规成员,谢谢大家支持与配合。

  5. 定期关注社群网站最新活动通知,积极参与社群活动,线上线下一起互动。

想了解更多测试、开发的知识、技能,或者职业规划,可以交流😍

 

 

 

  • 4
    点赞
  • 7
    评论
  • 38
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

<p class="sub-title" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 17px; font-weight: bold; line-height: 1; background-color: #ffffff;">适合人群:</p> <p class="study_crow sub-content" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 24px 0px 45px; padding: 0px; font-size: 16px; color: #313d54; white-space: pre-line; word-break: break-all; background-color: #ffffff;">【学习前提】 1. 具备python3语言基础 【学习人群】 1. 手工测试人员学习UI自动化测试技能 2. 开发人员转岗测试开发岗位 3. 如具有丰富的自动化测经验,本课程可能并不满足你</p> <p class="sub-title" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 17px; font-weight: bold; line-height: 1; background-color: #ffffff;">学习计划:</p> <p class="study_plan sub-content" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 24px 0px 45px; padding: 0px; font-size: 16px; color: #313d54; white-space: pre-line; word-break: break-all; background-color: #ffffff;">1.下载课程中配套的软件资料 2.结合课件中Demo可完成学习任务</p> <p class="sub-title" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 17px; font-weight: bold; line-height: 1; background-color: #ffffff;">课程目标:</p> <p class="course_target sub-content" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 24px 0px 45px; padding: 0px; font-size: 16px; color: #313d54; white-space: pre-line; word-break: break-all; background-color: #ffffff;">掌握UI自动化测试框架设计与实现</p> <p class="sub-title" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px; color: #313d54; font-size: 17px; font-weight: bold; line-height: 1; background-color: #ffffff;">课程简介:</p> <div class="course_desc sub-content" style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 24px 0px 0px; padding: 0px; font-size: 16px; color: #313d54; word-break: break-all; background-color: #ffffff;"> <p style="margin: 0px; padding: 0px;"><span style="font-family: 等线; margin: 0px; padding: 0px; font-size: 14px;">UI自动化框架设计需储备基础知识,方能完成自动化测试框架的实现,如数据驱动、日志、配置文件等</span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">AutoUiTestFrame</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">自动化框架的目录结构初步进行规划,目录结构如下:</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">Config </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">配置文件的目录</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">config.ini </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">配置文件;</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">globalconfig.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">获得日志路径、测试用例路径、测试报告路径、测试数据路径;</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Data </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试数据;</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">TestData.xlsx </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试数据。</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">Public </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">公共文件库</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Common </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">封装的公共的方法</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Commonconfig.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">公共的参数配置:调试过程中的测试数据等;</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">DoExcel.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">操作</span><span style="margin: 0px; padding: 0px;">excel</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">(数据驱动);</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Send_mail.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">发送邮件(</span><span style="margin: 0px; padding: 0px;">html</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">);</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">ReadConfigIni.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">读取</span><span style="margin: 0px; padding: 0px;">ini</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">格式的配置文件;</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">TestCaseInfo.py  </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试用例信息;</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Log.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">日志类。设置日志类,其他模块或文件需要日志类时,调用该文件。</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Pages </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">使用</span><span style="margin: 0px; padding: 0px;">po</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">模式设计测试页面</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">BasePage.py  </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">基类,对一些测试页面公共方法、属性的封装及</span><span style="margin: 0px; padding: 0px;">webdrive</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">一些方法的二次封装;</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Bing.py </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试页面。</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">Report </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试报告</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">Log </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">日志目录</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">*****log</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">日志。</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">TestReport </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试报告目录</span></span></p> <p style="margin: 0px 0px 0px 98px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">n<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">***html</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试报告。</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">TestCase </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">测试用例</span></span></p> <p style="margin: 8px 0px 8px 56px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: Wingdings; margin: 0px; padding: 0px;">v<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', Arial, sans-serif; margin: 0px; padding: 0px;">  </span></span><span style="margin: 0px; padding: 0px;">TC_bing.py</span><span style="font-family: 宋体; margin: 0px; padding: 0px;">。</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="margin: 0px; padding: 0px;">Run.py  </span><span style="font-family: 宋体; margin: 0px; padding: 0px;">控制测试用例的运行。</span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: 宋体; margin: 0px; padding: 0px;"><img src="https://img-bss.csdnimg.cn/202101190724514411.png" alt="" /><img src="https://img-bss.csdnimg.cn/202101190725086947.png" alt="" /><img src="https://img-bss.csdnimg.cn/202101190725246765.png" alt="" /><img src="https://img-bss.csdnimg.cn/202101190725362527.png" alt="" /><img src="https://img-bss.csdnimg.cn/202101190725483083.png" alt="" /></span></span></p> <p style="margin: 0px; padding: 0px; line-height: 21px;"><span style="margin: 0px; padding: 0px; font-size: 14px;"><span style="font-family: 宋体; margin: 0px; padding: 0px;"><img src="https://img-bss.csdnimg.cn/202101170527502231.jpg" alt="" /></span></span></p> </div>
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

木瓜小少年

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值