如何使用Selenium进行自动化测试

news/2024/11/28 5:32:43/

前言

对于很多刚入门的测试新手来说,大家都将自动化测试作为自己职业发展的一个主要阶段。可是,在成为一名合格的自动化测试工程师之前,我们不仅要掌握相应的理论知识,还要进行大量的实践,积累足够的经验,以便快速适应工作需求。

今天,笔者就想给大家介绍一些,关于使用Selenium进行自动化测试的实战案例经验。希望对测试新手们有所帮助。

同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取

软件测试视频教程观看处:

B站封神的接口测试教程,30天练完70个项目实战(含自动化测试、性能测试),学完即就业,永久白嫖!

1、测试自动化与Selenium工具

首先,我们要先澄清一个观点,自动化测试不可能完全取代手动测试。换句话说,就是自动化测试是为了减少手动运行测试用例数,帮助快速测试多语言站点,提高测试执行速度;是为了节省手动测试带来的时间成本、计算准确性成本等,而不是为了完全摆脱手动测试。因此,希望测试新手们对此有一个清晰的认知。

事实上,自动化测试的过程很简单,你只需要执行以下步骤:

图片

下面,切回正题。自2000年以来,基于开源工具和应用程序的成本效益、效率、可重复性、准确性和易用性越来越被大家接受和喜爱,因此,使用开源工具进行自动化测试就变得越来越重要。而作为开放源代码工具之一,Selenium工具(简称Selenium)在自动化测试方面,展现了自己的极大优势。

Selenium包含IDE、RC、Webdriver和Grid等组件,主要用于WEB交互和回归测试。它除了具有记录和回放功能外,还能帮助我们将记录的脚本导出为其他语言,包括Java,C#,Python,Ruby,Javascript和PHP等。

除此以外,Selenium web driver还允许我们通过其封装好的API进行自动化脚本开发,更好地辅助回归测试,通过数据驱动DDT,关键字驱动,PO等设计模式的结合应用,可以让我们的自动化脚本更具可靠性,可维护性,及延展性。

2、使用Selenium进行跨浏览器测试

顾名思义,跨浏览器测试就是在不同的Web浏览器和设备上,测试Web应用程序是否能够正常使用,以确保其在每个设备和浏览器上都能正常运行的一种测试。

那么,我们为什么需要跨浏览器测试呢?例如,同一个电商页面,在Chrome浏览器中能够正常显示,且操作流畅但并不能确保在同一台机器上IE(通常有不同版本),火狐等浏览器上也能正常显示且操作顺利。这也是为什么产生跨浏览器测试的由来。

如今,跨浏览器测试已成为Web应用程序测试的必需项。Selenium可以帮助我们在同一台计算机上,执行包括Safari、Chrome、Firefox、IE等不同浏览器的测试用例。并且,它还支持多种语言和操作系统。

3、使用Selenium进行测试的一些技巧分享

1便捷好用的定位器

Selenium web driver中封装的API给我们提供了8中定位页面元素的方式:通过id或name定位,通过class name或tag name定位,通过link text和partial link text定位,xpath定位,CSS定位;同时还提供了模拟页面元素操作方法,键盘操作,JS事件处理等一些方法,来满足与浏览器交互的功能。

2可利用数据驱动测试

Selenium还具备其他优秀特质。比如,如果要为不同的输入使用相同的测试和相同的代码,那么,选它就对了。Selenium允许开发人员和质量检查团队进行修改,因为它可以用于系统功能测试,以及浏览器兼容性测试。

另外,Selenium还有测试加速器,可以启动客户端自动化测试。这可以大大缩减你的回归测试周期,为你节约时间。

3不依赖特定的驱动程序

永远不要依赖于某一种特定的驱动程序,去做自动化测试。因为,不同的浏览器版本针对的驱动程序都是1-1对应的,举个例子,不存在这样的万能驱动程序,可以兼容各个版本各个厂商提供的浏览器。

另外,还可能发生不存在某种驱动程序的可能。比如,并非每一个chrome版本都有与之能对应上的驱动程序,这样就需要对被测浏览器进行范围上的指定,有针对性地选择当前项目中必须测试的那些浏览器等。

4)使用Page Objects

时下,Page Object已成为了测试自动化中的最佳设计模式。因为它不仅能增强测试维护能力,还能减少代码重复。此外,它还是一个面向对象的类(OOC),可以充当被测应用程序页面的接口。

简言之,Page Object是一种面向对象的设计模式,它重新定义了一些内容。如下:网页=类别;页面上的各种元素=变量;用户互动=方法。

因此,它具备以下优点:

  • 由于测试代码和页面代码是分开的。因此,Page Object可以抵制微小的调调整,有助于我们构建更稳固的代码框架。

  • 服务不会通过测试分散,但是该页面提供的所有服务都有一个存储库。

  • 可靠且易于维护。

  • 脚本是可读的,且代码是可重用的,还可以完全消除重复部分。

5)可利用等待代替睡眠,提升测试效率

Selenium具备Thread.sleep()逻辑,可以利用等待代替睡眠,从而提升测试效率。因为,我们都知道,睡眠不仅会减慢测试速度,并且,我们很难确定它什么时候执行完毕;而等待则不同,它能帮我们判断等待时长,并保证测试速度,从而提升我们的测试效率。

Selenium为我们提供了两类常用的等待模式:显示等待和隐式等待,分别用于不同的场景下,两者也可以搭配着使用,从而更好地辅助自动化测试。

6)当时间紧迫不要害怕破解Selenium

在工作中,有时候我们会遇到时间比较紧急,但工作量又比较大的情况。这种时候,我们要学会灵活应对。关键时刻,你可以通过入侵Selenium Webdriver,来制作有效的自动化脚本。下面给大家介绍两个快捷技巧。

(划重点啦!!)

技巧1:Test NG报告–屏幕快照链接

使用以下代码,来链接到Test NG报告的屏幕截图。这可以让你快速获取捕获屏幕截图的超链接:reporte.data("<: a href="+"E:\\ screenshot \\"+ screenshot_timestamp+".png"+">:")Click to open

技巧2:检查Web元素的存在

使用下面这串代码,你将可以快速检查Web对象的代码大小并确定特定Web元素的存在:Driver.findElements(pass.ID(“元素-ID”)).size()!=0

写在最后

实际工作中,Selenium还具备很多实用的功能。如果你能充分利用Selenium,就可以创建一个稳定、真实和可靠的UI自动化流程。当然,前提是你得积累Selenium的各种使用技巧,并经常应用他们。

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
 


http://www.ppmy.cn/news/1121432.html

相关文章

旅游行业怎么做微信营销?

让我们分析一下现在的旅游业市场&#xff0c;一方面用户的旅游需求越来越旺盛&#xff0c;而另一方面旅游从业者却都在抱怨市场越来越难搞&#xff0c;线下旅行社说&#xff1a;好惨&#xff0c;游客都跑线上大门户去订购了&#xff0c;我们只能吃剩下的&#xff0c;线上旅行社…

1794_ChibiOS网络书籍的介绍阅读

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 看到这个介绍我觉得这个OS的作者也是一个超级hack&#xff0c;而且非常有工匠精神。为什么要推出一个全新的RTOS呢&#xff0c;其实主要的原因就是觉…

C++Primer 第一章 开始

最近好像想的有点多&#xff0c;人也不知道该怎们办了&#xff0c;也不知道该怎么学。跟我们数据库老师还有前端老师交流了一下&#xff0c;感觉受益还是挺深的。需要慢慢整理一下现在状态&#xff0c;尽量有节奏的生活&#xff0c;学习。不急躁&#xff0c;不冒进。现在是大三…

消息队列中,如何保证消息的顺序性?

本文选自&#xff1a;advanced-java 作者&#xff1a;yanglbme 问&#xff1a;如何保证消息的顺序性&#xff1f; 面试官心理分析 其实这个也是用 MQ 的时候必问的话题&#xff0c;第一看看你了不了解顺序这个事儿&#xff1f;第二看看你有没有办法保证消息是有顺序的&#xf…

C语言入门Day_24 函数与指针

目录 前言&#xff1a; 1.指针和数组 2.函数和指针 3.易错点 4.思维导图 前言&#xff1a; 我们知道数组是用来存储多个数据的&#xff0c;以及我们可以用指针来指向一个变量。那么我们可以用指针来指向一个数组中的数据么&#xff1f; 指针除了可以像指向一个变量一样指…

重构Transformer神经网络:优化的自注意力机制和前馈神经网络

重构Transformer神经网络:优化的自注意力机制和前馈神经网络 原文代码网络结构推理代码训代码数据处理代码长词表辅助代码原文 标题:重构Transformer神经网络:优化的自注意力机制和前馈神经网络 摘要: 本论文研究了一种改进的Transformer神经网络模型,该模型使用区别于传统…

WPF控件模板2

在控件模板和为其提供支持的代码之间有一个隐含约定。如果使用自定义控件模板替代控件的标准模板&#xff0c;就需要确保新模板能够满足控件的实现代码的所有需要。 在简单控件中&#xff0c;这个过程就比较容易&#xff0c;因为对模板几乎没有&#xff08;或者完全没有&#…

【腾讯云 TDSQL-C Serverless 产品体验】| 实战分享

目录 一. &#x1f981; 产品引入二. &#x1f981; TDSQL-C数据库使用体验——实战案例2.1 实战案例介绍2.2 实操指导1. 购买TDSQL数据库2. [配置选择](https://buy.cloud.tencent.com/cynosdb#/)3. 配置TDSQL-C 集群4. 点击授权并创建5. 记住主机名和端口6. 登录TDSQL7. 链接…