如何搭建自己的自动化测试框架

如何搭建自己的自动化测试框架,第1张

这段时间一直在为公司内部开发
自动化测试框架
,简称GTF,因为这个框架现在还属于开发阶段,很多事都是言之过早。我会持续将我在架构过程中的想法写下来。供自己和大家一起分享。
这些想法,并不属于我一个人,我工作中的同事们给了我很大的帮助。
今天这一篇主要说明架构方面的考虑。
在现有的提供自动化测试解决方案的产品很多,包括:Robot,TestComplete,WinRunner等等。我只接触过这些,公司里也进行过很大的尝试,但是结果往往总是不竟如人意。
这中间,排除那些人员方面的原因,也总结这些自动化工具
,在使用过程中的不方便的地方:
1 定位控件不方便。标准控件还好,非标准控件就只能靠很多非正常方法去获取。而且,控件的识别往往和界面布局相关。
3 代码维护不方便。由于在编写过程中,大量的和界面相关的代码,导致最后在需求变更的时候,代码的维护,成为软件测试人员的负担。
针对这些情况,我们经过讨论,何不自己做一个软件测试框架。当然了,这是基于我们的丰富的知识积累的决策。大家不需要关心这个决策的情况。不过,可以多关注一些我们在做的过程中的分析结果。
通过分析流行的软件测试框架,有多种方式:
第一、最典型的就是消息驱动,自动化工具通过脚本录制和编写,保存为测试脚本。在回放的过程中,将这些脚本转换成为Windows消息,发送给我们应用程序的窗体和各种控件。
这种方式的好处在于,自动化工具和应用程序之间能够做到完全的隔离。但是,由于使用了Windows消息,它也拥有了一个非常致命的缺点。那就是消息队列的异步性与程序的顺序性之间的矛盾。很多消息发送给了应用程序,但是应用程序的处理可能已经和消息队列错位了。有一些关于代码的时间片等待,就是因为这个问题。
另外,就是由于完全的隔离,对于 *** 纵控件数据的能力大大降低。毕竟,拥有大量数据的控件都不是标准控件。
第二、嵌入式
。TestComplete就是这类工具。它有支持不同语言的版本。大概思路,就是在程序编译的时候,注入自己的控件代理。脚本的回放,直接可以通过代理, *** 纵到应用程序。
可惜的是,这类软件开发的时候,更多的是考虑平台的兼容性。对于特有平台上的支持不是十分完美。特别是对自定义控件(比如Delphi中,除了VCL的标准控件)支持也没有做到最好。不过,我这里必须承认,TC的内部实现机制可能十分强大,我不能窥探所有。如果有人清晰,可以指点一二。
针对上面的两种,我们想到的第三种方式:一体式。这种方式中,通过给程序在打包的过程中,添加额外的框架代码,使得程序自动提供控件的访问方式。自动化的模块也会作为软件测试程序的一部分运行。
应用程序在执行脚本的时候,自动通过脚本
,控制各控件界面的显示和关闭。它应该是第二种方式的变种。但是由于是自己实现的,所以在对各类自定义控件支持的都非常好。
针对一开始提出的几个自动化测试的难题,我们提出了,自动封装窗体上所有控件的概念(这些概念后面会详细介绍),对于软件测试人员,只要关心真正的业务 *** 作流程。而业务流程中涉及到的控件,已经为他们自动提供好。这样,脚本也自然只成了业务流程的脚本。其复杂度也就大大降下来了。
如果要推荐2个工具的话,我就推荐泽众软件公司的
自动化测试工具AutoRunner和测试管理工具Testcenter
,用这2个软件合作可以很好的进行自动化测试与对测试用例进行管理。

1建立服务器
我们可以在数据库中建一个qrlogin的表来保存key,比如我们建这样的一个表
其中qrl_guid就是登录的key,登录后的标识flag就是qrl_dingDingUserId(钉钉用户的ID)。
2生成二维码
二维码的生成可以使用相关的库,比如net的可以用thoughtworksqrcodedll,生成的字符串是htttp:// = ">1
新建一台Jenkins服务器,安装并配置好Jenkins
2
配置一个自动化测试脚本的代码库,可以使用Git或者SVN等版本控制工具。然后在Jenkins服务器上配置一个Job,负责自动的同步最新代码到Jenkins服务器上。
3
配置要跑自动化测试的虚拟机VM,推荐干净环境下安装需要跑自动化测试的依赖软件工具或者配置以及自动化测试工具(不提前安装配置也行,可以在跑自动化之前用另外的脚本自动安装配置),配置好之后关机并打一个snapshot镜像快照,并命名为prebuild或其它。
4
新建一个Jenkins Job,用来跑自动化。配置需要连接并使用的自动化测试虚拟机,配置要构建的自动化测试框架xml脚本文件(后面步骤有说明)和target,以及要归档的测试报告,邮件发送等等。
5
接下来的重点就是自动化测试框架的xml脚本文件了,首先里面定义一个target,负责获取自动化测试对象的安装包。
6
接着定义一个target(可选),负责从版本库上获取自动化测试脚本同步到Jenkins服务器上(也可以直接使用Jenkins Job本身的插件配置来获取代码)。
7
定义一个target,负责连接到虚拟机服务器,并恢复到虚拟机的原始状态例如prebuild,然后开机
8
定义一个target,负责拷贝项目产品安装包和自动化测试源代码到目标虚拟机上。
9
定义一个target,负责连接到目标测试虚拟机,并打开自动化测试工具,然后运行自动化测试脚本
10
定义一个target,负责处理自动化测试报告文件和日志文件并把它们从自动化测试虚拟机拷贝到Jenkins服务器对应的Job工作空间下。
11
最后定义一个主target,按照上面的target流程依次调用。这个主target就是Jenkins服务器上的自动化测试Job中配置的需要构建的Target。

类似的推理通常被误认为是采用自动化测试的绿灯。同时,学习测试自动化策略对于那些想要缩短软件交付周期并为QA工程师留下不那么单调的任务的人来说是一个好主意。 如果您尚未决定目标,那就花点时间。您可以阅读该文章,稍后再返回优点和缺点清单。

# 测试自动化策略是…

…质量保证团队在质量保证过程中应用自动化的方式。如果您开始分解测试自动化策略,将获得一系列元素,看起来像这样: 手动和自动测试计划; 测试环境,包括定义和描述;

具有成本效益的测试自动化策略意味着以结果为导向的方法,该方法可以帮助公司紧跟市场趋势并保持领先,或者至少实现其雄心勃勃的业务目标。 每个项目都有特定的测试自动化计划和策略。即使在测试类似产品时,某些方面也需要进行调整。您可以使用相同的模板来创建测试自动化策略,但最终版本至少会稍有不同。

# 逐步测试自动化策略

因此,您已经知道高效的自动化始于设定目标。让我具体说明一下。目标定义了从长远角度来看要实现的目标,例如: 更好的产品质量,从而提高用户满意度; 减少人力和测试时间; 提高测试效率,同时降低测试成本。 目标更像是“一次一步”。这些是您必须完成以实现目标的较小任务。测试自动化的目标包括: 更广泛的测试范围; 创建易于运行和维护的测试; 每次迭代后提高产品质量; 改进的稳定性和可靠性; 提高质量检查工程师的效率和更好的动力。 如果您想获得列表中每个项目的详细说明,可以在我们博客中有关自动化测试目标的文章中找到。现在,让我们继续进行逐步说明。

# 建立测试自动化策略

#1。选择要自动化的东西 设置测试自动化是一个非常耗时的过程,因此请考虑从短期和长期的角度计划实现的目标。设定合理的期望。 另外,请记住,选择合适的测试用例开始并不意味着您应该永远使用它们。这些测试在此阶段应该符合您的业务目标,但是随着软件的发展它们变得无关紧要,这是可以的。 现在,请考虑重复进行测试的频率及其需要的工作范围。在理想情况下,您将选择至少满足以下几个条件的测试:

另一方面,某些测试不适合自动化。例如:

我不建议自动化这些东西。该过程将花费很多时间,运行测试后得到的结果将不准确。例如,UX测试需要明确的人工输入和估计。 探索 性测试依赖于QA工程师的知识,经验,甚至直觉和偶然性。显然,手动检查在这里更为合理。 ##确定测试方法

测试自动化方法定义了如何执行测试。一个积极的态度开始在SDLC的早期阶段测试设计过程。质量保证团队会在创建构建之前发现缺陷。在反应式方法中,测试在编码完成后开始。质量检查小组将检查应该准备发布的产品的初始版本。

# 自动测试的类型

测试方法还涵盖团队要执行的测试类型。自动化的最常见候选者是:

# 测试金字塔

测试金字塔是一项原则,可帮助您明智地选择自动化案例。单元测试涵盖了最低级别的软件代码,并且具有最高的投资回报率,因为它们有助于避免更严重的错误。因此,将这个级别自动化到最大是合理的。 优先考虑的是组件测试,集成测试和API测试。回归是自动化的又一候选,因为它涵盖了熟悉的功能,每次迭代后都需要进行修订。 然后才进行GUI测试。尽管非常常见,但GUI自动化非常不切实际。这些测试难以维护,价格昂贵,并且存在大量的误报与否定。 测试金字塔 传统方法提出了相反的建议:GUI的自动化程度更高,单元测试的自动化程度更低,而这并不总是有效的。 考虑以下因素来选择测试方法: 应用程序所基于的技术。应用规范会影响所需的测试类型以及以后的测试类型-平台和工具的选择。 团队角色。确保每个团队成员都知道自己的职责,并且有资格涵盖该项目质量保证的特定方面。 涉及的风险。为了消除最可能和最具破坏性的风险,您需要覆盖脆弱的区域。因此,您应该知道风险。创建一个文档,在其中记录以下参数: 风险等级-风险变为现实时的处理难度; 概率—风险变为现实的可能性; 缓解—采取措施解决风险; 成本估算-降低风险的成本。

# 选择一个自动化框架

测试自动化框架是一组详细的准则,编码标准,项目层次结构,报告机制等,它们为自动化测试脚本创建了一个支架。 简而言之,这是使测试自动化高效的一种做法。质量检查团队需要选择合适的框架来创建脚本,这些脚本具有更高的重用性,更易于移植和降低维护成本。 一些最受欢迎的做法是:

测试自动化框架

记录和回放(也称为线性脚本,记录和回放)

它是所有框架中最简单的框架,它使质量检查工程师能够手动记录测试过程的每个步骤和验证参数,以便他们以后可以随时回放。 线性脚本是生成脚本的最快方法,甚至不需要自动化经验。缺点是重用少,维护困难。

结构化脚本(也:库体系结构,功能分解)

该框架采用使用记录和回放创建的脚本,将相似的脚本分组为函数,将其保存到库中,并在需要时调用。 库体系结构框架可确保更高的重用性,同时降低开发成本和维护工作量。另一方面,它还需要专业知识和更多计划。

模块化框架

测试自动化工程师将AUT(被测应用程序)划分为较小的组件(单元,功能,部分),并为每个组件创建一个脚本以进行隔离测试。分层组合这些脚本,可以创建用于更广泛测试运行的整体脚本。 由于数据是经过硬编码的,因此不能使用多个数据集,但是如果应用程序发生更改,则只需要修复单个测试脚本即可。

数据驱动框架

该框架将测试数据与脚本逻辑分开,并将其存储在外部。测试脚本使用此文件读取输入或输出参数。数据驱动的框架非常适合需要使用不同数据集多次测试同一功能的情况。因此,我们可以使用最少的脚本快速测试具有各种数据的方案。 设置数据驱动的框架非常耗时。对于熟练的测试自动化工程师来说,这是一项任务,它能够正确格式化数据并编写可利用此框架所有优点的脚本。

关键字驱动的框架

该框架主要用于GUI自动化,还意味着将测试数据与脚本分开存储。这些说明是按连续顺序(登录,单击等)描述 *** 作的字词。 使用关键字驱动的框架,您将获得可重用的代码,以将其应用于可独立于AUT构建的多个测试脚本。设置还需要花费大量时间,并且需要付出很多努力才能保持秩序。如果应用程序很大,则证明安装成本高。然后,您可以使用这些脚本几年。

混合框架

每个框架都有其优点和缺点。当测试自动化工程师开始最大程度地发挥积极功能并最大程度减少负面影响时,他们可能会提出各种不同框架的组合,这些框架最适合特定项目。这种混合使混合框架成为敏捷和DevOps测试自动化策略的最常见选择。

# 分配专用资源

不要忘记,软件测试自动化是专门为其雇用的人员的任务。有些人试图使自动化成为手动质量检查工程师的兼职工作。但是,这些专家已经承担了其他任务,并且很可能缺乏设置自动化测试的技能。寻找具有脚本编写经验或至少具有相关知识的人员来负责此任务范围会更加有效。

# 选择测试工具

您要注意的第一件事是工具的普及程度,这不是错误。流行的工具通常被证明是可靠的,并在网上进行了广泛的讨论。自动化工程师可以在Web上找到许多有用的技巧和有趣的实践。 此外,要找到精通Selenium,Appium或Cucumber的QA工程师,要比最近才出现且看起来不错的工具容易。除了受欢迎程度外,还有其他要考虑的标准。 测试工具

# 技术栈:

该技术软件已构建。 被测系统的要求。 您熟悉的编程语言。

# 工具功能:

支持的 *** 作系统,平台和环境(例如,自动浏览器测试,本机/混合应用程序测试等)。 跨平台测试支持。 复杂性与易用性。

# 预算:

经验表明,在开源工具上构建自定义框架是最佳选择。尝试几种解决方案。大多数软件都有免费试用期,因此您可以在购买许可证之前权衡商用工具的所有优缺点。

# 设计和运行测试

因此,您知道要自动化的内容,要应用的测试类型,要使用的框架和工具。现在是时候从安排过渡到实际工作并开始编写脚本了。这里有一些技巧可以帮助您:

# 保持脚本井井有条

有提供自动化软件测试服务经验的人承认,在维护阶段,事情往往会变得混乱。因此,最重要的是,根据测试的目的对测试进行分类,或者提出另一种分类,以便将来可以快速,轻松地找到相关案例。 不要忘记对新案例进行分类。审查并清理现有案例。它们中的许多并不能永远持续下去,这没关系。解决产品需求,以决定旧案例是否有效,应该使用还是不再适用。永远不要尝试重振无用的东西。

# 自动化测试:编写文档

文档管理与官僚主义无关,如果管理不当,则会造成延迟。相反,文档比内存更可靠,可以帮助您保持头脑清醒。那要放在纸上呢? 概述工作范围,然后为每个任务设置里程碑和时间表。它将使每个团队成员都在同一页面上。 用流程,角色和技术记录自动化方法。当您需要澄清或解决难题时,它将成为您可以解决的一组准则。 概述自动化环境。在准备好发布之前,为软件创建流水线。 进行风险分析,为“万事大吉”方案做准备。风险始终存在,而忽略风险的可能性只是粗心大意。 创建执行计划以确保没有错误的测试。写下日常任务和程序。启动自动回归之前,请运行单独的测试。确保没有假结果。

# 敏捷项目的测试自动化策略

敏捷的测试自动化策略通常意味着一种主动的方法,并且倾向于自动化的单元测试。这些是使快速发布成为可能的基本条件。 除此之外,请考虑使用关键字驱动的自动化框架。如果选择与业务需求相关的词,则只要这些词与已知命令相对应,就可以使用脚本。关键字也可以成为混合框架的一部分,该混合框架使灵活性在敏捷SDLC中至关重要。 敏捷项目的自动化策略永远不会忽视单元和组件测试。一次测试一个小功能有助于从自动化中提取真正的价值。一方面,您可以在开发人员编写一段代码后立即为功能创建脚本。另一方面,将较小的部分编译成覆盖大部分功能的测试脚本有助于最大程度地减少途中的错误。

# 内部与外包测试自动化策略

内部团队和外包团队的质量检查自动化策略之间没有根本区别。在这两种情况下,您都需要确定要使用哪种测试方法和框架,选择自动化工具,并找到有资格的人员来处理任务。 区别在于管理工作的范围。当然,在任何情况下,项目所有者(或负责人)都必须管理该过程。而且,如果您正在阅读有关如何构建测试自动化策略的信息,则可能需要弄清楚有关它的一些信息。 在这两种情况下,您都需要从招聘过程开始。外包测试在这里可以节省时间。组建内部团队并不是一个快速的过程。希望您会找到合格的人员,他们熟悉测试自动化的最佳实践。 如果您选择QA外包,您将拥有一个功能齐全的团队,在软件测试自动化服务,成熟的自动化策略,喜欢的工具和测试脚本模板方面具有相关经验。 换句话说,内部团队至少在开始时就需要更多的参与和管理。使用外包的质量检查,您可以请求报告,指定您感兴趣的详细信息,而其余的则是他们要处理的任务。 拥有质量检查部门的公司通常决定使用内部质量检查资源和外包自动化来覆盖手动软件测试,因为这样做更具成本效益。有些人选择从外部团队开始,然后在任务流程稳定的情况下聘请自动化专家。

# 总结一下

实现测试自动化需要时间,精力和特定技能。自动化测试并不总是必不可少的。除非您定义明确的目标,否则它不会替代手动测试,也不会使项目受益。那么,如何利用所有人都在谈论的那些优势呢? 知道为什么您确实需要QA自动化。保持合理的期望。从小处着手,并着眼于长远的眼光。如果结果不是即时的,请不要放弃自动化。但是最重 要的是,仔细研究您的自动化策略。希望我能帮助您,至少有一点帮助。

做自动化测试,怎么会不知道常用的自动化测试工具,还有相关的测试流程。以下是我为你整理推荐,希望你喜欢。
常用的自动化测试工具
常用的测试工具一般是:QTP+LoadRunner+QC

测试中还需的工具如下:

功能测试工具:QTPHP,WinRunnerMI,RobortIBM,QARunpuware
效能测试工具:LoadRunnerHP,WASMS,RobortIBM必须相应的外挂才支援效能方面的测试,QALoadpuware

测试管理工具:TestDirector/Quarlity Center这两个工具一个横版一个竖版,功能完全一样,Rational TestManager

缺陷跟踪工具:Bugzilla、Mantis

其他:Rational Purify、Rational PureCoverager
自动化测试流程
需求分析阶段:只要就是对业务的学习,分析需求点。

测试计划阶段:测试组长就要根据SOW开始编写《测试计划》,其中包括人员,硬体资源,测试点,整合顺序,进度安排和风险识别等内容。

测试设计阶段:测试方案一般由对需求很熟的高资深的测试工程师设计,测试方案要求根据《SRS》上的每个需求点设计出包括需求点简介,测试思路和详细测试方法三部分的方案。《测试方案》编写完成后也需要进行评审。

测试方案阶段:主要是对测试用例和规程的设计。测试用例是根据《测试方案》来编写的,通过《测试方案》阶段,测试人员对整个系统需求有了详细的理解。这时开始编写用例才能保证用例的可执行和对需求的覆盖。测试用例需要包括测试项,用例级别,预置条件, *** 作步骤和预期结果。其中 *** 作步骤和预期结果需要编写详细和明确。测试用例应该覆盖测试方案,而测试方案又覆盖了测试需求点,这样才能保证客户需求不遗漏。同样,测试用例也需要评审。

测试执行阶段:执行测试用例,及时提交有质量的Bug和测试日报,测试报告等相关文件
常用的9种自动化测试工具
1、RunnerMercury

Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程式是否能够达到预期的功能及正常执行。通过自动录制、检测和回放使用者的应用 *** 作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同释出版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障释出及长期稳定执行。企业级应用可能包括web应用系统,ERP系统,CRM系统等等。这些系统在释出之前,升级之后都要经过测试,确保所有功能都能正常执行,没有任何错误。如何有效地测试不断升级更新且不同环境的应用系统,是每个公司都会面临的问题。

2、Rational

Robot是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高阶指令码技术之前帮助其进行成功的测试。它整合在测试人员的桌面IBM

Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。

3、AdventNet

QEngineAdventNet QEngine是一个应用广泛且独立于平台的自动化软体测试工具,可用于Web功能测试、web效能测试、Java应用功能测试、Java 、API测试、SOAP测试、回归测试和Java应用效能测试。支援对于使用HTML、JSP、ASP、NET、PHP、JavaScript/VBScript、XML、SOAP、WSDL、e-merce、传统客户端/伺服器等开发的应用程式进行测试。此工具以Java开发,因此便于移植和提供多平台支援。

4、SilkTest

是业界领先的、用于对企业级应用进行功能测试的产品,可用于测试Web、Java或是传统的C/S结构。SilkTest提供了许多功能,使使用者能够高效率地进行软体自动化测试。这些功能包括:测试的计划和管理;直接的资料库访问及校验;灵活、强大的4Test指令码语言,内建的恢复系统Recovery System;以及具有使用同一套指令码进行跨平台、跨浏览器和技术进行测试的能力。

5、QA

RunQARun的测试实现方式是通过滑鼠移动、键盘点选 *** 作被测应用,即而得到相应的测试指令码,对该指令码可以进行编辑和除错。在记录的过程中可针对被测应用中所包含的功能点进行基线值的建立,换句话说就是在插入检查点的同时建立期望值。在这里检查点是目标系统的一个特殊方面在一特定点的期望状态。通常,检查点在QARun提示目标系统执行一系列事件之后被执行。检查点用于确定实际结果与期望结果是否相同。

6、Test

Partner是一个自动化的功能测试工具,它专为测试基于微软、Java和Web技术的复杂应用而设计。它使测试人员和开发人员都可以使用可视的指令码编制和自动向导来生成可重复的测试,使用者可以呼叫VBA的所有功能,并进行任何水平层次和细节的测试。TestPartner的指令码开发采用通用的、分层的方式来进行。没有程式设计知识的测试人员也可以通过TestPartner的视觉化导航器来快速建立测试并执行。通过可视的导航器录制并回放测试,每一个测试都将被展示为树状结构,以清楚地显现测试通过应用的路径。

7、Holodeck

强大的故障植入软体测试工具Holodeck is an advanced fault-injection

tool that gives you the power to attack an application while it monitors and

logs everything your application does - every function call, registry entry,

piece of data read or written

8、Telelogic

TAUTAU第二代包含三个最新的、最强大的技术用来加速大规模软体开发和测试:统一建模语言UML及它的许多最新修订版本中的特性,UML20;功能强大的测试语言TTCN-3和新的构造系统的方法:Model

Driven Architecture模型驱动构架。这三个新的业界标准结合成TAU的已经过认可的软体开发平台,形成了一个系统,一个一流的稳定可靠的工具解决方案。TAU第二代是系统与软体开发解决方案的一个突破,它把业界从使用了太长时间的手工、易出错、以程式码为中心的方法中释放出来,自然而然地迈向下一步,一个更加视觉化、自动化及可靠的开发方法。

9、TelelogicTAU/Tester

是基于通用测试语言TTCN-3,用于自动化的系统和整合测试的强大工具。TAU/Tester以现代化的开发工具为基础,提供高层测试功能,支援整个测试生命周期,加速自动化测试。TAU/Tester可使使用者特别关注于测试的开发,因为TTCN-3语言是独立于开发语言或测试装置的,且是抽象和可移植的。

selenium是一个自动化测试框架,它拥有IDE和API接口,可以应用于Java, C# Python, Ruby等语言。用selenium来构建一个自动化的测试程序非常的简单。不过首先你需要熟悉web应用里面的request, response概念,以及XPath的用法。这里我将介绍一下如何利用Junit与selenium来实现自动化页面测试。

1 下载必要依赖文件selenium-server-standalone-2250jar, junit-47jar,并将它们放置到工程的lib文件夹下面 (我这里使用Firefox浏览器来作为客户端,所以就不需要下载额外的浏览器执行器,如果你想用IE或是Chrome做客户端,请下载对应的执行器

>

2 建立一个测试工程,在工程里创建一个测试文件,并添加如下代码:

import comthoughtworksseleniumSelenium;

import junitframeworkTestCase;

import orgjunitAfter;

import orgjunitBefore;

import orgjunitTest;

import orgjunitrunnerRunWith;

import orgjunitrunnersBlockJUnit4ClassRunner;

import orgopenqaseleniumBy;

import orgopenqaseleniumWebDriver;

import orgopenqaseleniumWebDriverBackedSelenium;

import orgopenqaseleniumWebElement;

import orgopenqaseleniumfirefoxFirefoxDriver;

import orgopenqaseleniuminternalWrapsDriver;

import orgopenqaseleniumsupportuiWait;

import orgopenqaseleniumsupportuiWebDriverWait;

import javaioIOException;

import static orgopenqaseleniumsupportuiExpectedConditionsvisibilityOfElementLocated;

@RunWith(BlockJUnit4ClassRunnerclass)

public class pickTest extends TestCase {

  protected static Selenium selenium;

  private static WebDriver driver;

  @Before

  public void createAndStartService() throws IOException {

      selenium = new WebDriverBackedSelenium(new FirefoxDriver(), "");

      driver = ((WrapsDriver) selenium)getWrappedDriver();

  }

  @After

  public void createAndStopService() {

      driverquit();

  }

  @Test

  public void should_open_google_page() throws InterruptedException {

      driverget(">

      <span style="color: #ff0000;">WebElement searchBox = driverfindElement(Byxpath("//[@id=\"lst-ib\"]"));</span>

      searchBoxsendKeys("selenium");

      WebElement searchButton = driverfindElement(Byxpath("//[@id=\"tsf\"]/div[2]/div[3]/center/input[1]"));

      searchButtonclick();

      <span style="color: #3366ff;">Wait<WebDriver> wait = new WebDriverWait(driver, 30);

      waituntil(visibilityOfElementLocated(Byxpath("//[@id=\"ab_name\"]/span")));</span>

  }

}

3 运行这个测试,你将看到firebox浏览器被自动启动,然后会自动的输入selenum并搜索。

这样,一个简单的自动化页面测试就完成了。有的朋友可能不太明白这段代码的含义。上面的代码中我标出了红色和蓝色两部分,我简单解释一下。Selenium是通过对浏览器的包装来进行页面处理的,因此我们首先会创建一个与浏览器相关的WebDriver对象。然后我们需要查找页面元素就是通过findeElement的方法和XPath的方式来获取页面对象(红色部分代码)。那么通常我们的一个点击 *** 作产生服务器相应,这里就需要一些时间。蓝色部分的代码就是创建一个等待对象,你可以通过XPath的方式来确定返回后页面上的哪个元素加载完了就认为页面加载完了,同时等待对象也有一个超时设置,这样即是服务器端一直不返回或出错。我们依然可以结束测试。如何更快的确定页面元素的XPath,如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10528620.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存