毕业论文(崔青青)_第1页
毕业论文(崔青青)_第2页
毕业论文(崔青青)_第3页
毕业论文(崔青青)_第4页
毕业论文(崔青青)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、満注w4 兴厝本科生毕业论文(设计)题目:基于selenium框架的web自动化测试系统的设计与实现学生姓名隹冃冃学号100104200104指导教师朱凌二级学院信息学院专业名称计算机科学与技术 班级10计算机1班2014年05月声明及论文使用的授权本人郑重声明所呈交的论文是我个人在导师的指导下独立完成 的。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已 经发表或撰写的研究成果。论文作者签名:本人同意浙江财经大学有关保留使用学位论文的规定,bp:学校 有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以上网 公布全部内容,可以采用影卬、缩卬或其他复制手段保存论文。论文作者签名:基

2、于selenium框架的web自动化测试系统的设计与实现摘 要:随着应用软件的发展普及,规模和复朵度不断增加,人们对软件质量的重 视,使得软件测试技术逐渐成为人们关注的焦点。在此以web系统软件为例,传统的软 件测试技术和方法并不完全适用于web测试,手工测试效率乂十分低卞,web 口动化测 试工具的使用极大地提高了测试的效率。本系统包含日志管理模块、页面对象模块、测 试用例脚本模块、远程控制管理模块、ui驱动模块、多线程管理模块、屏幕截图管理模 块及测试驱动模块,具有针对web访问的不同系统、不同业务、不同主流浏览器进行自 动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、生成报

3、告等一系 列功能,在规范测试流程、提高测试效率、测试覆盖率方面具有一定的现实意义。关键词:seleniumwebdrivei; web测试;自动化测试;测试工具design and implementation of web automatic test system basedon selenium frameworkabstract: with the popularity of the application software, the increasing size and complexity, it is the importance of software quality, ma

4、king the software testing technology has become the focus of attention. in the web system software, for example, traditional software testing techniques and methods are not fully applicable to web testing, manual testing efficiency and very low, the use of automated testing tools for web has greatly

5、 improved the efficiency of the test. the system contains a log management module, the page object modules, test script module, remote control and management module, ui driver module, multi-thread management module, management modules and test screenshot drive module, with different systems for web

6、access, and different businesses, different major browsers developed automated testing, commissioning, project building, deploying, operating, monitoring, analysis, alerting, generate reports and a series of functions in regulating the testing process, improve test efficiency, test coverage has cert

7、ain practical significance key words: selenium webdriver;web test;automatic test;testing tools目录i引言12需求分析23可行性分析44自动化测试平台55基于数据驱动自动化测试的实施66系统概要设计96系统总体结构设计96.2测试用例层96.2.1模块类库106.2.2测试用例脚本106.3 代理(agent)层106.4 ui driver 层107系统实现127h志管理模块127.1.1准确定位127.1.2 提高开发效率147.2页而对彖模块157.3测试用例脚本模块177.4远程控制管理模块21

8、7.5屏幕截图管理模块257.6测试驱动模块268系统总体运行299遇到的问题及解决方法349.1 ats线程中断问题349.2 xpath路径错误359.3被测系统存在bug3610总结与展望37参考文献38致谢391引言随着社会的不断发展和信息化的不断普及,各种软件越來越多,在口常生活中也起 着越来越重要的作用,再加上客观系统的复杂性,无论经验多丰富的开发人员、无论采 用哪种开发模型开发出来的软件,每个阶段的技术复审也不可能毫不遗漏地查出和纠正 所有的错误,因此如何才能把新的软件做得更稳定、错误更少是开发人员非常关注的一 个重要问题。测试是解决以上问题的一个十分有效的手段。统计表明,在典型

9、的软件开 发项口屮,软件测试工作量往往占软件开发总工作量的40%以上,当然这只是大多数情 况。测试是软件能否通向市场的最后也是最重要的一关。传统的测试方法是手工测试, 目前大部分都是采用此方法,其特点就是简单,但是它存在的问题非常多。手工测试可 能引入人为的输入错误,尤其在数据量大的情况下;另外大量重复性的手工测试可能成 木较高,如杲考虑软件发生改动而需要重复手工测试的情况,这个成木还会更高;没有 办法对组件进行隔离的测试,从而导致发现问题和解决问题的成本都太高。在很多项目 中,测试人员的所有任务实际上都是手动处理的,而实际上有很犬一部分重复性强的测 试工作是可以独立出来自动实现的。针对手工测

10、试的缺点,自动化测试应运而生。相比手工测试,自动化测试的优势很 多;规范测试流程,提高测试效率、测试覆盖率等。很多人对自动化测试存在误区,把 其理解为找到一种口动化测试工具,把它应用到软件工程项目中,口动化测试工具只是 被看作是一种录制和冋放的工具。事实上自动化测试远不止这么简单,录制和冋放仅是 自动化测试屮的最低级别。现在常用的是基于数据驱动的测试,它是以数据来控制自动 化孤ij试的流程和动作的泗ij试。本次毕业设计的目的就是在设计中实现针对web访问的不同系统、不同业务、不同 主流浏览器进行自动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、 生成报告等一系列功能的自动化测试系

11、统。并能通过生成的报告对当前被测系统提岀一 些建设性的改进意见。2需求分析正如开发软件需要有需求分析一样,基于数据驱动的自动化测试本质上也是开发, 所以在制定测试方案之前也需要收集测试需求,这样才能保证自动化测试的成功。随着it技术的发展,传统的开发人员兼任测试人员的模式已经不能满足需求,s 前大多数较正规的软件公司均已采用独立的测试人员来对软件进行测试,所以形成了开 发人员、开发管理者、测试人员、测试管理者的模式。如图21所示:规范的测试过程需要上述人员的通力配合,因此在做自动化测试之前可以有一份规 范的文档,用来描述测试内容、人员安排、测试流程、缺陷管理等。其中开发管理人员 和测试管理人员

12、分别作为开发团队和测试团队的接i,协调两个团队的工作,一般來说 开发人员需要提供自动化测试所需要的数据、稳定的可执行文件等相关资源,测试人员 根据功能测试用例创建适合做口动化的测试用例,并建立基于测试驱动的门动化测试工 程。自动化测试工程是建立在自动化测试平台之上,在自动化测试平台上做开发。测试 脚本开发必须通过详细、合理的设计,要对脚本代码进行划分,脚本文件或数据文件分 层管理。这样有利于自动化脚木的开发与维护,从而节省自动化测试的投入成木,也使 得不同测试人员或开发人员可以协调开发脚本。脚本开发完成、提交发布之后,首先是测试人员,测试人员可以运用自动化测试进 行回归测试等,节约人力成本的效

13、果尤其显著。其次是开发人员,开发人员可以在版本 提交测试z前,在开发环境进行自动化测试,来确保当前的新版本不会影响固有功能的 正常使用。工程维护人员也可以进行自动化测试,在系统维护升级之后,对部分系统功 能进行自动化测试验证,提高升级效率。既要有_个设计合理的测试脚本运行平台,又要有一个功能完善的测试执行控制平 台,所以建立一个口动化测试平台就显得极为重要。3可行性分析基于对自动化测试优点的分析,很多人对自动化测试存在另一个误区,认为对于所 冇的软件都适合引入自动化测试,11只要引入自动化测试,就会提高测试的效率,降低 测试的成本。实际上并非如此,自动化测试也需要开发和搭建测试框架,创建测试用

14、例, 这也就意味着成本的投入。对于一个项口周期很紧的测试项口,按测试方案进行手工测 试的效率可能要比自动化测试的效率好得多。对于一个一次性开发、没有后续版本更新的软件而言,自动化测试是毫无意义的。 但是现在很多软件都会不断推出新的版本,在推出新版本的过程中,每次除了测试新加 或修改过的模块,相关联的旧模块同样需要测试,才能保证产品的质量,这样就需要做 大量的重复工作,自动化测试的价值就体现在可以创建测试屮的可重用模块,同时述可 以覆盖大部分的功能测试,这样可以使测试人员从回归测试屮解脱岀来,专注于新模块 的测试。所以可以说动化测试的最大价值在于回归测试。因此,对于一个软件或其中某些模块是否适合

15、自动化测试必须要先进行可行性分 析,以证明我们所选的测试方法的正确性,通常可进行自动化测试的软件需耍满足以下 几点:(1) 手工测试复杂度高:(2) 所选测试用例,实现自动测试的难度低;(3) 软件用于口动化测试的模块界面变化和对不大;(4) 软件生命周期长,经常推出新的版本;(5) 软件开发已基本完成,主要用于测试升级版本;(6) 所选自动化测试框架必须对所测软件应用界而有有效的支持,且维护管理成本较 低。另外自动化测试前期需要投入时间和一定的成本投入,故不要一开始就期望有高的 回报,具效应会在不断完善积累中显现。而11不要期待自动化测试口j以发现每个版本中 的大部分错误,因为自动化测试主要

16、用于冋归测试,而ii产品中每个新版本的大部分bug 会在新模块中出现,所以自动化测试在于长期效应,能保证每个版本产品质量的稳定。4自动化测试平台自动化测试架构一般可以分为上下两个层次,上层是管理整个自动化测试的开发, 执行以及维护,在比较庞大的项目中,它体现重要的作用,它可以管理整个自动测试, 包括自动化测试用例执行的次序、测试脚木的维护、以及集中管理测试用例、测试报告 和测试任务等。下层主要是测试脚木的开发,充分的使用相关的测试服务,构建测试驱 动,并完成测试业务逻辑。自动化测试平台一般由管理端和执行端组成,由管理端发出信号通知执行端开始执 行相应的测试任务,从而执行相应的脚本进行测试,并将

17、测试结果报告管理端。平台划分如图41所示。管遲平台(management platform)i测试计划管理(test plan mgt.> ii测试报告管理(test report mgt.) ii测试脚本管理(test script mgt.>< 1i 运行策略(operation strategy)- ii 测试客户端管理(test client mgt.x'b 其他管理功能(other mgt. functions)-1"iiiii测试、开发、工程维护人员都可以通过管理平台进行自动化测试(everyone can use mgt. platform)i

18、iijiir服务执行平& service execution platform)页面对象库(page object library)日志管理(log mgt.)测试用例脚本库(test case script library)1远程控制管理(remote control mgt.)ul 驱动库(ul driver library)多线程管理(multithreading mgt.)屏慕截图管理(screen capture library)测试驱动引® (test driving engine)其他功能(other functions)v 丿图4-1平台划分本毕业设计主要是针

19、对自动化测试平台的开发(即测试服务执行端),主要是对执 行端(ats)功能的开发。ats摒弃了录制和回放的机制,采用主流的测试驱动的方式 进行自动化测试。测试驱动是一个自动化测试框架的核心,其决定整个自动化脚木设计。当前比较流 行的测试驱动有数据驱动和关键字驱动,使用不同的测试驱动,关系到脚木重用率,以 及后期的可维护性。而本系统采用数据驱动的自动化测试。5基于数据驱动自动化测试的实施基于数据驱动的自动化测试不是简单的录制冋放,而ii通过编程的形式來实现每个 自动化测试用例,其中数据文件独立于测试用例,这样数据的更新对整个测试工程的维 护会降低到最小,因此创建自动化测试框架需耍有一定的编程基础

20、。自动化测试系统(ats)的运行机制如图51所示。图5-1运行机制图解(1)加载并解析ats平台配置文件perties加载log4j.jar,解析log4j.xml配置文件,并动态重定向fh忐文件存储路径(3)动态查询到xxx.xml数据配置文件 加载xxx.xml数据配置文件到测试套件中(5) 初始化测试套件(6) 启动testng类(7) testng框架对测试套件进行解析testng框架通过对测试套件屮的xxx.xml数据配置文件的解析找到相应具有 test注解的类方法并运行(9) 执行页面对象模型库中某个页面对象的方法如:增加报告,删除报告等封装好 的方法(10) 执行u

21、i驱动层中封装好的针对元素的方法:如点击按钮,给输入框赋值等 操作(11) 执行selenium框架提供的api方法,如 获得元索等(12) 通过selenium提供的api驱动浏览器模拟手工就行操作,如登录,进入到公 告页面等(13) 对页面进行操作后获得的反馈原始数据(14) 对反馈的原始数据进行逻辑处理,取得可用的数据(15) 把处理后的数据和预定好的数据进行匹配(16) 反馈匹配后的数据给脚本类(17) 把最终结果反馈给testng框架(18) tesng框架根据获得的结果生成相应的测试报告注:在步骤z间都会生成相应的志;在9-18步骤之间都会冇可能生成相应的截图。元素和数据工厂ele

22、ment and data factoryit测试数据|i工八.test data i .factory-1 i| (xml files)"公共的软件模块(common software)ui 驱动(基本元素)ui driver(basic element)图6-1三层枢架结构6系统概要设计6.1系统总体结构设计本系统采用selenium2 (selenium 1.0 + webdriver )自动化测试框架、spring框架、 testng测试框架、sdp (srt development platform世导开发平台)作为本系统的总体 集成框架,集成开发环境(ide)釆用myec

23、lipse,开发环境采用java语言,运行环境 采用windows和linux两种。本系统的开发主要实现了针对web访问的不同系统、不同业务、不同主流浏览器进 行门动化测试的开发、调试、项目构建、部署、运行、监控、分析、告警、生成报告等 系列功能。本系统采取的是三层框架结构,分别包括测试用例层(测试用例脚本模块)、代理 (agent)层(页面对象模块等)、ui driver层(测试驱动模块等)三层,如图61所示。非公共的软件模块(individual software)测试用例(test case)代理(对象模型)agent(object model)6.2测试用例层在本系统屮测试用例层(脚本

24、)乂分为“模块类库”和“测试用例脚本”两部分。6.2.1模块类库“模块类库”分为“模块公共类库”和“模块特定类库”。“模块公共类库”是在模 块内部将可以为各个模块共享使用的方法抽彖出来,作为一个公共类。它可以是一个单 的逻辑操作,也可以是复朵逻辑实现。比如用户打开浏览器、登录、点击菜单等操作。“模块特定类库”是指各个业务模块类的特定操作,可以是某个检查点的校验,也可以 是针对页而上的某个操作。“测试用例脚本”在最上层,它根据测试点进行设计,而向 具体的应用。它可直接调用“模块类库”的方法,即调单个逻辑操作,而不关心这个逻 辑的实现冇多复杂。它是单个或多个逻辑操作的集合,即一个测试用户脚本。比如

25、,在 客户端访问资源的测试用例,它调用了客户端登录方法和访问资源方法。6.2.2测试用例脚本脚本与贝面对彖库分离使得脚本在一定程度上独立于web贝面,脚本没有直接的 处理页面元索,代码通过元索对象映射表获取赋有web页面标签值的变量。目前实现 了一半,页而对象库已经独立于脚本单独管理,但暂时是写死在常量类当中再赋给变量, 后期可做扩展维护。web页面对象包括html标签、xpath和页面内容(文木、图片、 对话框中的值等),当页面对象变更后,一般情况下不需要再修改脚本,只要修改页面 对象库即可。6. 3 代理(agent)层代理(agent)层主要包括“页而元素操作组件”和一系列“工具组件”。

26、“页而元 素操作组件”通过在接i(interface)中定义例如打开浏览器、在输入框中输入值、点 击页面元素等抽象方法,并开发了针对ie浏览器的具体实现类,实现针对ie浏览器页 面元素的各种操作,并提供给脚木调用。脚本层只需耍关心被测试的应用是针对什么浏 览器即可。通过配置,动态选择创建的对象,调用针对指定浏览器的页面元素操作。“工 具组件”廿前包括例如comparator (x'j象比较器,用于页面对象排序),log (功能实现 和调用封装),dateutils (日期、时间处理),random (各种随机文本生成接口), class for name (根据配置动态创建对象),re

27、gex (各种正则表达式判断功能实现),dynamic file lookup (动态文件查找),threadsleep (线程等待封装)等一系列功能。6.4 ul driver 层底层功能和测试业务并不相关,主要是控制ats正常运行的一些机制,包括了多线 程脚本运行管理机制、多远程客户端控制管理机制,ats启动控制机制,ats运行环境 管理机制,多种类浏览器测试管理机制等底层功能实现。7系统实现7.1日志管理模块日志管理模块主要是通过apache的一个开放源代码项目即log4j来实现,在本系 统设计屮主要右两大作用。7. 1. 1准确定位日志管理便于开发人员在开发过程中运行测试用例时,可以准

28、确定位当丽程序已 完成的某种处理的记录及正在进行的操作,当然更易于找到问题出现的位置,提高开发 效率。配置文件log4j.xml如下所示:<?xml version="1.0" encoding="utf-8n ?><!doctype iog4jconfiguration system hlog4j.dtdh><log4j:configuration xmlns:log4j=,/log4j/,><appender name=hconsoleh class=horg.apach

29、e.log4j.consoleappendern><layout class=norg.apache.log4j.patternlayouth><param name=hconversionpatternh value=h%p%m %n%dyyyy-mm-ddhh:mm:ss(%c:%l)%n%nh /> </layout></appender><appender name=hinfom class=norg.apache.log4j.rollingfileappenderh><param name=uencoding&q

30、uot; value=nutf-8n /><param name=hfileh value=m./logs/start.logh /><param name=nappendn value=htrueh /> <param name=umaxfilesize" value="lmbn /> <param name="maxbackupindexn value=" 10000" /><layout class=horg.apache.log4j.patternlayoutn><

31、param name=nconversionpattern" value="%d %c:%l %p %m%n" /> </layout> v!限制输出级别<filter class=horg.apache.log4j.varia.levelrangefilter"><param name=ulevelminn value=hinfo"/> <param name=hlevelmaxh value=herror'7></filter></appender><

32、;appender name=herrorn class=norg.apache.log4jrollingfileappenderh><param name=nencodingn value=nutf-8" /><param name=hfileu value=h./logs/start.logn /><param name=nappendh value二rue" /><param name="maxfilesize" value=',lmb,' /><param name=hm

33、axbackupindexn value二t0000" /><layout class=horg.apache.log4j.patternlayouth><param name=nconversionpatternh value=h%d %c:%l %p %m%nh /> </layout>v!-限制输出级别-><filter class="org.apache.log4j.varia.levelrangefiltern><param name="levelmin" value二"

34、;error”/<param name="levelmax" value=herrorv></filter></appender>v! 通过<logger></logger>的定义可以将各个包中的类日志输出到不同的日志文件 中-><!-ats平台的日志管理><logger name="com.srt.ats" additivity二"false”<level value=,infoh /><appender-ref ref=ninfo"

35、; /><appender-ref ref二"error” /><appender-ref ref="console" /></logger><!-ezg平台的h志管理-><logger name="com.srt.ezgn additivity="false"><level value=,infoh /><appender-ref ref=ninfo" /><appender-ref ref="errorn />

36、<appender-ref ref= "console" /></logger><root><priority value="info" /><appender-ref ref= "console" /><appender-ref ref="infon /><appender-ref ref="errorn /></root></log4j :configuration>日志文件配置完成,其使用如下:声明日志

37、对彖private static logger logger = logger.getlogger(anceighteenlmpl.class);/ “信息”的输出(tools.stepwithlog(',公告发布者账号登录");/ “错误信息”的输出logger.error(tools.resultwithlog(methodname, false,”页而元素被异常匹配到。具体原因如 卜,” + testinfo.tostring();7.1.2提高开发效率可以通过文件配置,将岀现问题的h志信息打包,便于开发人员集中处理程序中 出现的问题。public

38、 static void setfile(string classname)appender infoappender = logge i*.ge(rootloggei*(). getappender(publicconstant.info_appender);appender errorappender = logge r.getrootlogger(). getappender(publicconstant.error_appender);string path = classname.substring(4,classname.lastindexof(h.h); path = clien

39、trc.clientlp + file.separator + path.replaceall(".", ""+file.separator); 截取类名 iebrowseawimplclassname = classname.substring(classname.lastindexof(".h)+l); if("locar,.equals(tools.getatspropertiesvalues("ats.server") 如果是info信息if (infoappender instanceof rolling

40、fileappender) rollingfileappender fappender = (rollingfileappender) infoappender; fappende i*.setfile(”logs” + file.separator + path + file.separator + "info" + file.separator + classname + ".log");fappende 匚 activateoptions();如果是error信息if (errorappender instanceof rollingfileapp

41、ender) rollingfileappender fappender = (rollingfileappender) errorappender; fappende r.setfile(”logs" + file.separator + path + file.separator + nerrorn + file.separator + classname + hjogn);fappende 匚 activateoptions();以上代码动态处理log日志输出目录和输出文件,按照类名作为文件名,这样方 便日志文件打包后,对应开发文件的查找。7. 2页面对象模块主要用于对被测软件

42、的每一界面(ui)均建立相关的对象模型,方便最上层调用,这 一层需根据软件的不断更新而更改,下面将以公告通知列表页面(如图71所示)为对 象进行介绍。<-t 2o2.g).226j4m06(vtrnim<ia十曲沁1 :工作台 > 公行il知砌心:9s1656001也x : 35022公篙也:.旳逊.#130分床吕時5»家苑菽如人倒程f1nbqi曼再作1附世爭uft.花連48892011-09-30pfiq2时世om12014-02-27无pbt3册世导服“昔通12014-02-27iisj无38t4公吉 mmwisew林州世导弭技ia対12014-02-27恭刼无

43、38t5公占战会命辕壬!g砧附世审i技12014-02-27w3b¥6畑公吿入附世1找2014-02-27w3flt7妣公普个*律附世全处公吿2杀2014-02-26菲硼无bt8wixoftwaarphslw知公宿咨鼻2茏2014-02-26无8¥9公吉卓豪壽s9刊號沿附ittsto技12014-02-26非肯頂无8干10公?;二畫工w2附世討技金体公台ea19qb2014-02-26菲迄頂无目ot共2921条记5! 1/293页 褂页!2汶10 | 20 | 50 |条| 2345 6 7>s f5诡圣图7-1公告通知列表页面根据页面对象的特点及系统需要,主要将页面

44、对象规划为三个小模块,分别是页 面元素、元素的setter和getter方法及页面元素的操作(如点击新建按钮,点击标题链 接等)。部分页而元素定义如下:/*公告主题*/private string subjected = officeancconstant.subject_id; private string subject = nn;/*公告类型第一个下拉框*/private string noticetype_id = officeancconstant.notice_type_ld;private string noticetype = ”";/*公告类型第二个下拉框*/pri

45、vate string gglx_id = officeancconstant.gglx_id;private string gglx =/*所屈栏目*/private string boardidquery_id = officeancconstant.boardid_query_id;private string boardldquery = nn;/*开始日期*/private string messagestartdate_id =officeancconstant.message_startdate_id;private string messagestartdate =/*结束fl

46、期*/private string messageenddate_id = officeancconstant.message_enddate_id;private string messageenddate = ,n;页而元素的定义使得当页而发生变化时,只需要在当前页面对象屮做一次修改全部 完成,不需要再逻辑代码屮反复做修改,捉高开发效率。部分setter和getter方法如s:public string getsubject() return subject;public void setsubject(string subject) this.subject = subject;publ

47、ic string getnoticetype() return noticetype;public void setnoticetype(string noticetype) this.noticetype = noticetype;setter和getter方法的便于在外部类方法中对页面对象元素值的修改及使用。 页面元索操作方法(以新增一条简单公告为例)如下:public boolean add(basebrowse brodriver, webdriver driver) throws exception brodrive匸clickwaitbymouse(kiveby.xpath(th

48、is.add_xpath),publicconstant.wait_ten);logger. info(tools.stepwithlog(”点击新增按钮”);ancadd.put(brodriver, driver);(tools.stepwithlog(h 新增公告结束“);boolean exsit = supe匚iselementexsimbrodriver, driver, by.xpath(this.add_xpath); if(exsit)(tools.stepwithlog(h找到“新建”按钮,公告列表页面加载完毕”);else lo

49、gger.error(tools.stepwithlog(找到“新建”按钮,公告列表页而加载失败”);return exsit;通过以上三步把页而元素及对元素的操作完成后,就写好了当前页而的对彖,再 测试用例中耍用到的时候,需耍在其中声明一下即可使用。7.3测试用例脚本模块以下是登陆的测试脚木,当加载xxx.xml数据配置文件到测试套件屮,初始化测试 套件后,启动testng类,testng框架就会对测试套件进行解析,tesmg框架通过对测试 套件中的xxx.xml数据配置文件的解析找到相应具有test注解的类方法并运行。test(timeout= 1200000)屮的timeout代表的是当

50、前方法允许执行的最长时间。 overridetest(timeout = 1200000)parameters( "companyld", "username", "password") public void anceighteen_one(string companyld, string username,string password, string regex, string subject, string boardld,string showcontent, string ggdetail) boolean resulto

51、ne = false;/公告新增 boolean resulttwo = false;/反馈为开/闭 string methodname = newthrowable().getstacktrace()0.getmethodname();/测试信息stringbuffer testinfo = new stringbuffer();try atslogge r.setfile(classname);logget. info(tools.startwithlog(methodname);login login = new login(); login.setcompanyid(companyld

52、); login.setu seranme(usern ame); login.setpassword(password); driver = login.getdriver(brodriver); (tools.stepwithlog("获取 driver 成功”); login.clickloginwithstaff(brodriver, driver);parameters()屮的表示的是当前方法执行所需要的参数,由xxx.xml文件屮提供,并 且名称要严格统一,如下所示:<?xml version=u1.0n encoding=mutf-8n?&g

53、t;<!doctype suite system " ><suite name=hanceighteenimpln><test name=nanceighteenimplh><classes><class name=hcom.srt.ezg.scripts.office.announcementsimpl.anceighteenimpr'><methods><include name=hanceighteen_oneux/include><include name=hanceightee

54、n_twohx/include></methods></class></classes>v!集团帐号-<parameter name=ncompanyldn value=n951656001 n/>v!成员编号有资质管理权限账户-><parameter name=nusernamen value=n35022n/>v!-密码一<parameter name=hpasswordh value=”654321”/></test></suite>login对象中定义了登陆需要的三个主要元素,集

55、团账号,用户名及密码,还定义 了获取driver方法,以打开浏览器驱动。 login.clickloginwithstaff(brodriver, driver)此方法是登陆按钮的响应事件。 brodriver.clickwaitbymouse()执行ui驱动层中封装好的针对元素的方法,即点击某个 按钮。login.clickloginwithstaff(brodriver, driver);/*员工登录* param brodriver封装了浏览器驱动的对象*/public void clickloginwithstaff(basebrowse brodriver, webdriver dr

56、iver) this.put(brodriver, driver);/*填写登录信息并点击登录* param brodriver封装了浏览器驱动的对象* param driver浏览器骡动对象*/private void put(basebrowse brodriver, webdriver driver) (tools.stepwithlog (”企业输入框置空”); brodriver.setvaulewaitelement(driver,by.id(panyid_id),publicconstant.wait_five);tools.sleepthread(publ

57、icconstant.wait_one * 1000); (tools.stepwithlog("输入集团 id-" + panyid); for(int i=0;i<panyid.length();i+)string temp = panyid.substring(i, i+1); (tools.stepwithlog c 输入文字一” + temp); brodrive 匚 setvaulewaitelementnoclear(dtivei*,by.id(panyi d_id), temp, publicconstant

58、.wait_five);(tools.stepwithlog(h输入用户 id-" + this.useranme); brodriver.setvaulewaitelement(driver, by.id(this.useranme_id), this.useranme, publicconstant.wait_two);(tools.stepwithlog(u 输入密码+ this.password); brodrive匚setvaulcwaitelement(drivei*, by.id(this.password_id), this.password, publicconstant.wait_two);(tools.stepwithlo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论