毕业论文基于selenium框架的web自动化测试系统的设计与实现内容摘要:

个或多个逻辑操作的集合,即一个测试用户脚本。 比如,在客户端访问资源的测试用例,它调用了客户端登录方法和访问资源方法。 测试用例脚本 脚本与页面对象库分离使得脚本在一定程度上独立于 WEB 页面,脚本没有直接的处理页面元素,代码通过元素对象映射表获取赋有 WEB 页面标签值的变量。 目前实现了一半,页面对象库已经独立于脚本单独管理,但暂时是写死在常量类当中再赋给变量,后期可做扩展维护。 WEB 页面对象包括 HTML 标签、 XPath 和页面内容(文本、图片、对话框中的值等),当页面对象变更后,一般情 况下不需要再修改脚本,只要修改页面对象库即可。 代理( Agent)层 代理( Agent)层主要包括“页面元素操作组件”和一系列“工具组件”。 “页面元素操作组件”通过在接口( interface)中定义例如打开浏览器、在输入框中输入值、点击页面元素等抽象方法,并开发了针对 IE浏览器的具体实现类,实现针对 IE浏览器页面元素的各种操作,并提供给脚本调用。 脚本层只需要关心被测试的应用是针对什么浏览器即可。 通过配置,动态选择创建的对象,调用针对指定浏览器的页面元素操作。 “工具组件”目前包括例如 Comparator(对象比较器,用于页面对象排序), Log(功能实现和调用封装), DateUtils(日期、时间处理), Random(各种随机文本生成接口), Class For Name(根据配置动态创建对象), Regex(各种正则表达式判断功能实现), Dynamic file lookup(动态文件查找), Threadsleep(线程等待封装)等一系列功能。 UI Driver 层 底层功能和测试业务并不相关,主要是控制 ATS 正常运行的一些机制,包括了多线程脚本运行管理机制、多远程客户端控制管理机制, ATS 启动控制 机制, ATS 运行环境浙江财经大学本科生毕业论文(设计 ) 11 管理机制,多种类浏览器测试管理机制等底层功能实现。 浙江财经大学本科生毕业论文(设计 ) 12 7 系统实现 日志管理模块 日志管理模块主要是通过 Apache 的一个开放源代码项目即 Log4j 来实现,在本系统设计中主要有两大作用。 准确定位 日志管理便于开发人员在开发过程中运行测试用例时,可以准确定位当前程序已完成的某种处理的记录及正在进行的操作,当然更易于找到问题出现的位置,提高开发效率。 配置文件 如下所示: ?xml version= encoding=UTF8 ? !DOCTYPE log4j:configuration SYSTEM log4j:configuration xmlns:log4j=39。 appender name=CONSOLE class= layout class= param name=ConversionPattern value=[%p]%m %n[%d{yyyyMMdd HH:mm:ss}](%c:%L)%n%n / /layout /appender appender name=INFO class= param name=Encoding value=UTF8 / param name=File value=../logs/ / param name=Append value=true / param name=MaxFileSize value=1MB / param name=MaxBackupIndex value=10000 / layout class= param name=ConversionPattern value=%d %c:%L [%p] %m%n / /layout !限制输出级别 filter class= param name=LevelMin value=INFO/ param name=LevelMax value=ERROR/ /filter /appender 浙江财经大学本科生毕业论文(设计 ) 13 appender name=ERROR class= param name=Encoding value=UTF8 / param name=File value=../logs/ / param name=Append value=true / param name=MaxFileSize value=1MB / param name=MaxBackupIndex value=10000 / layout class= param name=ConversionPattern value=%d %c:%L [%p] %m%n / /layout !限制输出级别 filter class= param name=LevelMin value=ERROR/ param name=LevelMax value=ERROR/ /filter /appender !通过 logger/logger的定义可以将各个包中的类日志输出到不同的日 志文件 中 !ATS 平台的日志管理 logger name= additivity=false level value=INFO / appenderref ref=INFO / appenderref ref=ERROR / appenderref ref=CONSOLE / /logger !ezg 平台的日志管理 logger name= additivity=false level value=INFO / appenderref ref=INFO / appenderref ref=ERROR / appenderref ref=CONSOLE / /logger root priority value=info / appenderref ref=CONSOLE / appenderref ref=INFO / appenderref ref=ERROR / /root /log4j:configuration 浙江财经大学本科生毕业论文(设计 ) 14 日志文件配置完成,其使用如下: //声明日志对象 private static Logger logger = ()。 //“信息”的输出 ((公告发布者账号登录 ))。 //“错误信息”的输出 ((methodName, false,页面元素被异常匹配到。 具体原因如下 , + ()))。 提高开发效率 可以通过文件配置,将出现问题的日志信息打包,便于开发人员集中处理程序中出现的问题。 public static void setFile(String className){ Appender infoAppender = (). getAppender()。 Appender errorAppender = (). getAppender()。 String path = (4,(.))。 path = + + (\\., \\+)。 //截取类名 IeBrowseAWImpl className = ((.)+1)。 if(local.equals(())) { //如果是 INFO 信息 if (infoAppender instanceof RollingFileAppender) { RollingFileAppender fappender = (RollingFileAppender) infoAppender。 (logs + + path + + info + + className + .log)。 ()。 } //如果是 ERROR 信息 if (errorAppender instanceof RollingFileAppender) { RollingFileAppender fappender = (RollingFileAppender) errorAppender。 (logs + + path + + error + + className + .log)。 ()。 浙江财经大学本科生毕业论文(设计 ) 15 } } } 以上代码动态处理 Log 日志输出目录 和输出文件,按照类名作为文件名,这样方便日志文件打包后,对应开发文件的查找。 页面对象模块 主要用于对被测软件的每一界面 (UI)均建立相关的对象模型,方便最上层调用,这一层需根据软件的不断更新而更改,下面将以公告通知列表页面(如图 71 所示)为对象进行介绍。 图 71 公告通知列表页面 根据页面对象的特点及系统需要,主要将页面对象规划为三个小模块,分别是页面元素、元素的 setter 和 getter 方法及页面元素的操作(如点击新建按钮,点击标题链接等)。 部分页面元素定义如下: /**公告主题 */ private String subject_id =。 private String subject =。 浙江财经大学本科生毕业论文(设计 ) 16 /**公告类型第一个 下拉框 */ private String noticeType_id =。 private String noticeType =。 /**公告类型第二个下拉框 */ private String gglx_id =。 private String gglx =。 /**所属栏目 */ private String boardIdQuery_id =。 private String boardIdQuery =。 /**开始日期 */ private String messageStartDate_id =。 private String messageStartDate =。 /**结束日期 */ private String messageEndDate_id =。 private String messageEndDate =。 页面元素的定义使得当页面发生变化时,只需要在当前页面对象中做一次修改全部完成,不需要再逻辑代码中反复做修改,提高开发效率。 部分 setter 和 getter 方法如下: public String getSubject() { return subject。 } public void setSubject(String subject) { = subject。 } public String getNoticeType() { return noticeType。 } public void setNoticeType(String noticeType) { = noticeType。 } setter 和 getter 方法的便于在外部类方法中对页面对象元素值的修改及使用。 页面元素操作方法(以新增一条简单公告为例)如下: public boolean add(BaseBrowse broDriver, WebDriver driver) throws Exception { (driver, (), 浙江财经大学本科生毕业论文(设计 ) 17 )。 ((点击新增按钮 ))。 (broDriver, driver)。 ((新增公告结束 ))。 boolean exsit = (broDriver, driver, ())。 if(exsit){ ((找到“新建”按钮,公告列表页面加载完毕 ))。 }else { ((未找到“新建”按钮,公告列表页面加载失败 ))。 } return exsit。 } 通 过以上三步把页面元素及对元素的操作完成后,就写好了当前页面的对象,再测试用例中要用到的时候,需要在其中声明一下即可使用。 测试用例脚本模块 以下是登陆的测试脚本,当加载 数据配置文件到测试套件中,初始化测试套件后,启动 TestNG 类, testng 框架就会对测试套件进行解析, testng 框架通过对测试套件中的 数据配置文件。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。