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

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

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的各种使用技巧,并经常应用他们。

更多学习资源,公众号主页点击领取资料 查看我评论区置顶

新手入门必看:使用Selenium进行自动化测试相关推荐

  1. IntelliJ IDEA 最常用配置详细图解,新手入门必看

    转载自   IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...

  2. 【学点Linux】Linux该如何学习(新手入门必看)

    Linux该如何学习(新手入门必看) 文章目录 Linux该如何学习(新手入门必看) 如何去学习 碰到问题怎么办 英文读不懂怎么办 忘记Windows的思维方式 无意间在一处看到的,分享出来. 如何去 ...

  3. 旅行青蛙前期怎么玩 新手入门必看攻略

    旅行青蛙前期怎么玩?有什么新手攻略吗?相信大家最近都被这款游戏刷屏了,感觉全世界都在玩,很多玩家都不小心入坑了,下面就和小编一起去看看这游戏要怎么玩吧. 旅行青蛙前期怎么玩? 主角是一只可爱的小青蛙, ...

  4. 撼龙图怎么开鸿蒙炁灵,【一人之下】新手入门必看攻略,萌新技巧超详细攻略...

    <一人之下>新手该怎么玩呢?新手需要掌握什么技巧呢?小编为大家整理了<一人之下>新手入门超详细攻略,一起来看看吧. 一.装备 6件防具.1把武器.6个饰品.还有炁灵和铭文. 装 ...

  5. c语言计算机培训,C语言计算机基础学习||新手入门必看

    本次内容笔者将完全抛弃传统教学的形式,通过自己所学所闻得出来的心得,用通俗易懂的语言结合生活,来让大家更好的认识计算机编程,更好的入门计算机基础. 笔者也想用自己的论述告诉大家,专业知识有时会比较枯燥 ...

  6. Linux该如何学习(新手入门必看)

    本节旨在介绍对于初学者如何学习 Linux 的建议.如果你已经确定对 Linux 产生了兴趣,那么接下来我们介绍一下学习 Linux 的方法. 如何去学习 学习大多类似鹿丁解牛,对事物的认识一般都是由 ...

  7. JavaScript基础教程新手入门必看

    对前端稍微有点了解的初学者都知道,JavaScript是必不可少的工具.毫不夸张的说,大部分网页都使用了JavaScript,想要成为一个优秀的前端工程师,做出漂亮令用户满意的网页,熟练掌握JavaS ...

  8. python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...

    尽管网上有许多关于Python面向对像的编程介绍,小编我看完后总觉得不是很满意,也不过瘾,所以决定自己亲自动手写篇文章,帮你理解Python面向对象的编程的基本概念和核心思想.本文内含很多实例代码,以 ...

  9. 软件测试理论基础知识详解(新手入门必看)

    目录 1.软件测试定义: 2.软件测试工程师的素质: 3.软件的分类: 4.软件测试的对象: 5.软件测试的目的: 6.软件测试的原则 7.软件测试分类 总结 重点:配套学习资料和视频教学 1.软件测 ...

最新文章

  1. explode php 报错,PHP函数explode和split的区别
  2. jboss1.7_在JBoss 7中使用HA Singleton
  3. python画笑脸图案-如何让这些代码中的一个在窗口中绘制不同大小的笑脸?
  4. 抢跑直播电商双11,快手电商帝国雏形初显
  5. 【算法精讲】集成分类与随机森林
  6. linux系统调用函数(C语言):open,close函数和文件描述符
  7. 数据仓库相关书籍调研
  8. Python打包EXE神器 pyinstaller
  9. 推荐15个 JavaScript 和 CSS 库
  10. css 点击效果_使用CSS实现逼真的水波纹点击效果
  11. 同济保研计算机,同济大学保研率28%,保研高校前四:复旦、北大、交大、清华...
  12. 下载了linux版redis怎么用,Linux下redis的安装与使用图文教程
  13. 算法笔记_面试题_4.树的遍历(前序/中序/后续遍历)
  14. mysql免费版稳定吗_mysql免费版好用么
  15. WEB前端(4)—— CSS经典案例(DIV+CSS布局)
  16. android车载蓝牙开发,车载蓝牙开发二
  17. steamcom启动服务:443端口被占用,请关闭占用该端口的进程后再点击启动服务!
  18. 计算机PS个人规划目标,这里有一份PS个人陈述写作规划
  19. Oracle RMAN无法删除归档一例
  20. 腾讯视频和优酷视频怎么嵌入网页的方法

热门文章

  1. R语言使用aov函数进行单因素协方差分析(One-way ANCOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、通过contrast参数自定义对比组进行组间两两方差分析
  2. seaborn使用boxplot函数可视化箱图并基于分组均值或者中位数进行箱图降序(descending)排序(Sort Boxplots in Descending Order)
  3. R语言基于模拟退火(Simulated Annealing)进行特征筛选(feature selection)
  4. pip国内常用源及配置方式
  5. 机器学习误差分析(Error Analysis)实战
  6. 集成学习模型(xgboost、lightgbm、catboost)进行回归预测构建实战:异常数据处理、缺失值处理、数据重采样resample、独热编码、预测特征检查、特征可视化、预测结构可视化、模型
  7. JS+库+框架+工具
  8. GEO芯片数据探针id转化
  9. linux定义LD_library,linux – CentOS /usr/local / lib系统范围内$LD_LIBRARY_PATH?
  10. java语言编写简易表达式_将简单的表达语言放入Java