1、Selenium 简介
1、1Web应用程序的测试自动化
当今许多(可能是大多数)软件应用程序都是作为基于Web的应用程序编写的,以便在Internet浏览器中运行。测试这些应用程序的有效性在公司和组织之间差异很大。在高度互动和响应迅速的软件流程的时代,许多组织正在使用某种形式的敏捷方法,测试自动化经常成为软件项目的必需品。测试自动化通常就是答案。测试自动化意味着使用软件工具对要测试的应用程序运行可重复的测试。对于回归测试,这提供了响应性。
测试自动化有许多优点。大多数都与测试的可重复性和测试执行的速度有关。有许多商业和开源工具可用于协助开发测试自动化。硒可能是最广泛使用的开源解决方案。本用户指南将帮助新的和经验丰富的Selenium用户学习有效的技术,为Web应用程序构建测试自动化。
本用户指南介绍了Selenium,教授其功能,并介绍了Selenium社区积累的常用最佳实践。提供了许多示例。此外,还提供了有关硒内部结构和硒的推荐用途的技术信息。
测试自动化具有提高软件团队测试过程长期效率的特定优势。测试自动化支持:
· 频繁的回归测试
· 快速反馈给开发人员
· 几乎无限次迭代的测试用例执行
· 支持敏捷和极端开发方法
· 有纪律的测试用例文档
· 定制的缺陷报告
· 找出手动测试遗漏的缺陷
1、2什么是Selenium
Selenium 是目前用的最广泛的Web UI 自动化测试框架。
一套软件工具,用来支持不同的自动化测试方法
开源软件:可以根据需要来增加重构工具的某些功能
跨平台:linux , windows mac
核心功能就是可以在多个浏览器上进行自动化测试
支持多种编程语言
目前已经被google , 百度, 腾讯等公司广泛使用
能够实现类似商业工具的大部分功能,并且还实现了商业工具不能支持的功能
建议大家整体学习整套工具, 将来好选择适合自己测试目的的测试工具。
1、3 Selenium项目简史
2004年,当Jason Huggins在ThoughtWorks测试内部应用程序时,Selenium首次出现。作为一个聪明的家伙,他意识到他的时间比他每次做出的改变都手动完成同样的测试更好。他开发了一个Javascript库,可以驱动与页面的交互,允许他自动重新运行针对多个浏览器的测试。该库最终成为Selenium Core,它是Selenium Remote Control(RC)和Selenium IDE的所有功能的基础。Selenium RC是开创性的,因为没有其他产品允许您使用您选择的语言控制浏览器。
虽然Selenium是一个巨大的工具,但它并非没有缺点。由于其基于Javascript的自动化引擎和浏览器适用于Javascript的安全限制,因此不可能做出不同的事情。更糟糕的是,随着时间的推移,webapps变得越来越强大,使用新浏览器提供的各种特殊功能,并使这些限制变得越来越痛苦。
2006年,一位名叫西蒙·斯图尔特(Simon Stewart)的杰出工程师开始研究他称之为WebDriver的项目。谷歌长期以来一直是Selenium的重要用户,但测试人员不得不解决产品的局限性。Simon想要一个测试工具,它使用浏览器和操作系统的“原生”方法直接与浏览器对话,从而避免了沙盒Javascript环境的限制。WebDriver项目的开始旨在解决Selenium的痛点。
跳到2008年。北京奥运会标志着中国作为全球大国的到来,美国大规模的抵押贷款违约引发了自大萧条以来最严重的国际经济衰退,黑暗骑士被每个人看到(两次),仍然从不合时宜的损失中挣扎希斯莱杰。但那一年最重要的故事是Selenium和WebDriver的合并。Selenium拥有大量的社区和商业支持,但WebDriver显然是未来的工具。这两个工具的连接为所有用户提供了一套共同的功能,并将测试自动化中的一些最聪明的头脑集中在一个屋檐下。2009年8月6日WebDriver和Selenium社区的联合电子邮件中,WebDriver的创建者Simon Stewart详细介绍了WebDriver和Selenium合并的原因。
“为什么项目合并?部分是因为WebDriver解决了selenium中的一些缺点(例如,能够绕过JS沙箱。我们有一个华丽的API),部分原因是selenium解决了WebDriver中的一些缺点(例如支持更广泛的浏览器)和部分是因为主要的硒贡献者和我认为这是为用户提供最佳框架的最佳方式。“
1、4 Selenium的工具套件
Selenium由多个软件工具组成。每个人都有特定的角色。
Selenium 2**(又名Selenium WebDriver)**
Selenium 2是该项目的未来发展方向,也是Selenium工具包的最新成员。这个全新的自动化工具提供了各种令人敬畏的功能,包括更具凝聚力和面向对象的API,以及对旧实现的局限性的回答。
正如您在Selenium项目简史中所读到的,Selenium和WebDriver开发人员都认为这两种工具都具有优势,并且合并这两个项目将成为一个更加强大的自动化工具。
Selenium 2.0是这项努力的产物。它支持WebDriver API和底层技术,以及WebDriver API下的Selenium 1技术,可以最大程度地灵活地移植测试。此外,Selenium 2仍然运行Selenium 1的Selenium RC接口,以实现向后兼容。
Selenium 1**(又名Selenium RC或遥控器)**
正如您在Selenium项目简史中所读到的那样,Selenium RC长期以来一直是主要的Selenium项目,在WebDriver / Selenium合并之前推出了Selenium 2,这是最新,功能更强大的工具。
现在,Selenium 1已被弃用,并且不受主动支持(主要是在维护模式下)。
S****elenium IDE
Selenium IDE(集成开发环境)是用于构建测试脚本的原型工具。它是一个Firefox和Chrome插件,提供易于使用的界面,用于开发自动化测试。Selenium IDE具有记录功能,可记录执行时的用户操作,然后将其作为可重用脚本导出为可在以后执行的多种编程语言之一。
注意
尽管Selenium IDE具有“保存”功能,允许用户将测试保持在基于表格的格式中以供以后导入和执行,但它不是为运行测试版而设计的,也不是为了构建所有自动化测试而设计的。具体来说,Selenium IDE不为测试脚本提供迭代或条件语句。在撰写本文时,没有计划添加此类内容。原因部分是技术性的,部分是基于Selenium开发人员鼓励测试自动化的最佳实践,这总是需要一些编程。Selenium IDE简单地用作快速原型制作工具。Selenium开发人员推荐使用Selenium 2或Selenium 1进行严格,强大的测试自动化,以便与众多支持的编程语言中的一种一起使用。
Selenium- Grid
Selenium-Grid允许Selenium RC解决方案适用于大型测试套件和必须在多个环境中运行的测试套件。Selenium Grid允许您并行运行测试,也就是说,可以在不同的远程计算机上同时运行不同的测试。这有两个好处。首先,如果你有一个大型测试套件或一个运行缓慢的测试套件,你可以通过使用Selenium Grid来划分你的测试套件,使用这些不同的机器同时运行不同的测试,从而大大提高其性能。此外,如果必须在多个环境中运行测试套件,则可以让不同的远程计算机同时支持和运行测试。在每种情况下,Selenium Grid通过使用并行处理大大缩短了运行套件所需的时间
1、5选择你的Selenium工具
建议选择Selenium IDE 来熟悉Selenium 的命令。 使用IDE以快速来创建简单的测试脚本
不建议选择Selenium IDE 来执行自动化测试,要有效地使用Selenium,可以使用Selenium 2或Selenium 1以及一种受支持的编程语言来构建和运行测试。
建议先熟悉: Selenium IDE,再进一步熟练使用Selenium-WebDriver API
1、6支持的浏览器和平台
在Selenium 2.0中,支持的浏览器取决于您使用的是Selenium-WebDriver还是Selenium-RC。
l IE:Windows 7,Windows 8和Windows 8.1的适当组合的Internet Explorer 7,8,9,10和11。截至2014年4月15日,不再支持IE 6。该驱动程序支持在适用的情况下运行32位和64位版本的浏览器
l FireFox大部分版本
l Chrome
l Safari
l Opera
l Andrioid 系统上的自带浏览器
l IOS(使用ios-driver或appium)
l HtmlUnit的无界面实现
Selenium 1.0和Selenium-RC。
这是Selenium 1.0的旧支持平台。它仍应适用于Selenium-RC的Selenium 2.0版本。
浏览器 | Selenium IDE | Selenium 1(RC) | 操作系统 |
---|---|---|---|
Firefox 3.x | 录制和播放测试 | 启动浏览器,运行测试 | Windows,Linux,Mac |
Firefox 3 | 录制和播放测试 | 启动浏览器,运行测试 | Windows,Linux,Mac |
Firefox 2 | 录制和播放测试 | 启动浏览器,运行测试 | Windows,Linux,Mac |
IE 8 | 仅通过Selenium RC *测试执行 | 启动浏览器,运行测试 | 视窗 |
IE 7 | 仅通过Selenium RC *测试执行 | 启动浏览器,运行测试 | 视窗 |
IE 6 | 仅通过Selenium RC *测试执行 | 启动浏览器,运行测试 | 视窗 |
Safari 4 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Mac |
Safari 3 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Mac |
Safari 2 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Mac |
歌剧10 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Linux,Mac |
歌剧9 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Linux,Mac |
歌剧8 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Linux,Mac |
谷歌浏览器 | 仅通过Selenium RC测试执行 | 启动浏览器,运行测试 | Windows,Linux,Mac |
其他 | 仅通过Selenium RC测试执行 | 可能的部分支持 | 适用时 |
*通过Selenium IDE在Firefox上开发的测试可以通过简单的Selenium RC命令行在任何其他支持的浏览器上执行。
*Selenium RC服务器可以启动任何可执行文件,但根据浏览器安全设置,可能存在限制某些功能的技术限制。
1、7灵活性和可扩展性
你会发现Selenium非常灵活。您可以通过多种方式为Selenium测试脚本和Selenium框架添加功能,以自定义测试自动化。与其他自动化工具相比,这可能是Selenium的最大优势。这些自定义在本文档的各个地方都有描述。此外,由于Selenium是开源的,因此始终可以下载和修改源代码。
2、Selenium IDE
2、1介绍
Selenium-IDE(集成开发环境)是您用于开发Selenium测试用例的工具。它是一种易于使用的Chrome和Firefox扩展,通常是开发测试用例的最有效方式。它使用现有的Selenium命令为您在浏览器中记录用户操作,并使用该元素的上下文定义参数。这不仅节省了时间,而且是学习Selenium脚本语法的绝佳方式。
本章全部是关于Selenium IDE以及如何有效地使用它。
2、2安装
点击添加到Chrome或添加到Firefox。安装完成后,地址栏右侧会出现一个按钮。
![img][]
2、3 打开
要运行Selenium IDE,只需单击地址栏右侧的按钮即可。它打开如下,带有一个空的脚本编辑窗口和用于打开项目或保存项目的按钮。
![img][]
2、4 IDE功能
工具栏
工具栏包含用于控制测试用例执行的按钮,包括用于调试测试用例的步骤功能。最右边的按钮,即带有红点的按钮,是记录按钮。
![img][]
![img][]
速度控制:控制测试用例的运行速度。
![img][]
全部运行:在加载具有多个测试用例的测试套件时运行整个测试套件。
![img][]
运行:运行当前选定的测试。只加载一个测试时,此按钮和“全部运行”按钮具有相同的效果。
![img][]
暂停/恢复:允许暂停和恢复正在运行的测试用例。
![img][]
停止:停止当前运行的测试用例。
![img][]
步骤:允许您通过一次运行一个命令来“逐步”完成测试用例。用于调试测试用例。
![img][]
记录:记录用户的浏览器操作。
测试用例面板
您的脚本显示在测试用例面板中。
![img][]
“命令”,“目标”和“值”输入字段显示当前选定的命令及其参数。这些是输入字段,您可以在其中修改当前选定的命令。在底部窗格的“参考”选项卡中为命令指定的第一个参数始终位于“目标”字段中。如果“参考”选项卡指定了第二个参数,则它始终位于“值”字段中。Comment字段允许您以人类可读的格式指定当前命令的描述。
![img][]
如果您在“命令”字段中输入,则将根据您键入的第一个字符填充下拉列表; 然后,您可以从下拉列表中选择所需的命令。
导航面板
测试用例和测试套件之间的导航通过Selenium IDE的右侧完成。单击带有小插入符号的测试将打开一个菜单。
![img][]
保存项目时将保存为新的**.side**格式,其中包括所有测试用例和套件的组合。它被称为一个项目。
控制台面板
底部窗格,称为控制台面板,它与web devtools的相似性,用于不同的实用程序功能:Log,Reference,具体取决于选择的选项卡。
记录
运行测试用例时,即使您没有先选择“日志”选项卡,也会自动在此窗格中显示显示进度的错误消息和信息消息。这些消息通常对测试用例调试很有用。注意清除按钮以清除日志。
![img][]
参考
添加,编辑或查看测试步骤时,此窗格显示有关当前处于焦点的命令的信息。详细信息,如名称,描述,接受的参数以及有关这些参数的详细信息。
![img][]
3、Selenium webdriver
3、1介绍webdriver
Selenium 2.0的主要新功能是集成WebDriver API。除了解决Selenium-RC API中的一些限制之外,WebDriver还旨在提供更简单,更简洁的编程接口。Selenium-WebDriver的开发是为了更好地支持动态网页,页面元素可能会在不重新加载页面的情况下发生变化。WebDriver的目标是提供精心设计的面向对象的API,为现代高级Web应用程序测试问题提供改进的支持
3、2与Selenium-RC相比,WebDriver如何“驱动”浏览器?
Selenium-WebDriver使用每个浏览器对自动化的本机支持直接调用浏览器。如何进行这些直接调用,以及它们支持的功能取决于您使用的浏览器。有关每个“浏览器驱动程序”的信息将在本章后面提供。
对于熟悉Selenium-RC的人来说,这与你习惯的完全不同。Selenium-RC以相同的方式为每个支持的浏览器工作。它在浏览器加载时将“javascript函数”注入浏览器,然后使用其javascript在浏览器中驱动AUT。WebDriver不使用此技术。同样,它使用浏览器内置的自动化支持直接驱动浏览器。
3、3WebDriver和Selenium-server
您可能需要也可能不需要Selenium Server,具体取决于您打算如何使用Selenium-WebDriver。如果您的浏览器和测试都在同一台机器上运行,并且您的测试只使用WebDriver API,那么您不需要运行Selenium-Server; WebDriver将直接运行浏览器。
有一些原因可以将Selenium-Server与Selenium-WebDriver一起使用。
l 您正在使用Selenium-Grid在多台计算机或虚拟机(VM)上分发测试。
l 您希望连接到具有特定浏览器版本但不在当前计算机上的远程计算机。
l 您没有使用Java绑定(即Python,C#或Ruby),并且希望使用HtmlUnit Driver
3、4设置Selenium-WebDriver项目
安装Selenium意味着在开发中设置项目,以便您可以使用Selenium编写程序。如何执行此操作取决于您的编程语言和开发环境。
在这里只做Java内容的介绍
设置Selenium 2.0 Java项目的最简单方法是使用Maven。Maven将下载java绑定(Selenium 2.0 java客户端库)及其所有依赖项,并将使用maven pom.xml(项目配置)文件为您创建项目。完成此操作后,您可以将maven项目导入首选IDE,IntelliJ IDEA或Eclipse。
首先,创建一个包含Selenium项目文件的文件夹。然后,要使用Maven,您需要一个pom.xml文件。这可以使用文本编辑器创建。因为已经有很好的参考资料,所以不会详细介绍pom.xml文件或使用Maven,你的pom.xml文件看起来像这样。在为项目创建的文件夹中创建此文件。
![img][]
3、5 Selenium-WebDriver的驱动程序
WebDriver是应该编写测试的关键接口的名称,但有几个实现。这些包括:
HtmlUnit****驱动程序
这是目前WebDriver最快,最轻量级的实现。顾名思义,这是基于HtmlUnit。HtmlUnit是一个基于Java的WebBrowser实现,没有GUI。对于任何语言绑定(除了java),Selenium Server都需要使用此驱动程序。
用法:Java : WebDriver driver = new HtmlUnitDriver();
Firefox****驱动程序
使用Firefox插件控制Firefox浏览器。使用的Firefox配置文件从计算机上安装的内容中删除,仅包含Selenium WebDriver.xpi(插件)。默认情况下也会更改一些设置(请参阅参考资料以查看哪些设置)Firefox驱动程序能够运行并在Windows,Mac,Linux上进行测试
用法: Java :WebDriver driver = new FirefoxDriver();
Internet Explorer****驱动程序
InternetExplorerDriver是一个独立的服务器,它实现了WebDriver的有线协议。此驱动程序已在适用于Vista,Windows 7,Windows 8和Windows 8.1的组合上使用IE 7,8,9,10和11进行了测试。截至2014年4月15日,不再支持IE 6。
该驱动程序支持运行32位和64位版本的浏览器。选择如何确定在启动浏览器时使用哪个“bit-ness”取决于启动哪个版本的IEDriverServer.exe。如果启动32位版本的IEDriverServer.exe,将启动32位版本的IE。同样,如果启动64位版本的IEDriverServer.exe,将启动64位版本的IE。
用法: Java :WebDriver driver = new InternetExplorerDriver();
ChromeDriver
ChromeDriver由Chromium 项目iteslf 维护/支持。WebDriver通过chromedriver二进制文件与Chrome一起使用(可在chrome项目的下载页面上找到)。您需要安装chromedriver和Chrome浏览器版本。chromedriver需要放在系统路径的某个位置,以便WebDriver自动发现它。Chrome浏览器本身是由chromedriver在默认安装路径中发现的。这两者都可以被环境变量覆盖。
用法: Java :WebDriver driver = new ChromeDriver();
Opera****驱动程序
有关使用Opera驱动程序的信息,请参阅Selenium Wiki中的Opera Driver wiki文章。
iOS****驱动
查看ios-driver或appium项目。
Android****驱动
查看Selendroid项目
4、Selenium安装配置环境及部分实例内容
首先下载好****Eclipse 和配置好Java 环境变量
下载链接:www.eclipse.org/downloads/
根据自己的系统选择下载相对应的版本
下载JDK。
下载链接:www.oracle.com/technetwork…
配置环境变量
变量名 变量值
Path D:\Java\jdk1.8.0_121\bin
Classpath D: \Java\jdk1.8.0_121\jre\lib\rt.jar
命令提示符输入 Javac
![img][]
安装成功
Selenium driver Java版本的安装方法
1、下载selenium-java-2.44.0.zip压缩文件,解压后打开
官方下载地址: www.seleniumhq.org/download/
2、下载selenium-java-client-driver-1.0.2.jar
3、下载selenium-server-standalone-2.39.0.jar
4、下载并安装火狐浏览器
官方下载地址:www.firefox.com.cn/download/
5、在火狐浏览器中安装两个插件:selenium IDE和firebug
安装 Selenium IDE
. 用firefox浏览器打开下面的地址:
addons.mozilla.org/en-US/firef…
![img][]
. firefox进行selenium插件安装,重启浏览器后,点最右侧“打开菜单“— 开发者
这时显示selenium,安装成功!
. 火狐浏览器中在菜单栏目中选择《工具》 — 《附加组件》
在右边的搜索框中输入 firebug,在搜索结果中点击后面的安装,最后重启浏览器就可以打开firebug了
6、打开Eclipse创建一个project,并将解压后selenium-java-2.44.0.zip里面的全部内容复制到project目录下
点击刚才创建的project右键 Build Path -> Config build path -> java build Path -> Libraries -> Add JARs添加所有刚才复制到project下的jar包
然后在添加selenium-java-2.44.0.jar和selenium-java-2.44.0-srcs.jar
7、复制并添加selenium-java-client-driver-1.0.2.jar和selenium-server-standalone-2.39.0.jar到project中
8、然后就可以在project下面创建class,在运行class前要先启动selenium server Selenium server的启动方法
提示:在前面步骤中已经下载了selenium-server-standalone-2.39.0.jar
根据自己的需要将selenium-server-standalone-2.39.0.jar放在指定的目录
点击开始菜单输入cmd进入dos界面,先跳转到C盘然后输入java –jar selenium-server-standalone-2.39.0.jar回车,即启动了selenium server,
接下来就会用到****selenium IDE
Selenium IDE 的作用
在实际自动化测试中,不会用Selenium IDE, 因为没有逻辑判断,IDE 主要用来辅助,录制了操作步骤,导成java语言代码,或者你不会定位,或者你不会操作某个元素,可以录制下看看。
打开selenium IDE 主要功能介绍和录制回访成功示例截图
![img][]
![img][]
录制完后, 可以把录制的脚本,导出代码, 供自动化项目使用
![img][]
导出的文件保存为java类的文件名形式,如 TestDemo.java
将导出的java类文件复制到项目源文件夹src内,进行编辑修改
下载chrome驱动chromedriver
(chromedriver.storage.googleapis.com/index.html ,2.33对应62版的chrome)
将chromedriver.exe复制到chrome安装目录(以下按64位windows系统)
64位windows的默认位置:C:\Program Files (x86)\Google\Chrome\Application\
34位windows的默认位置:C:\Program Files\Google\Chrome\Application\
打开eclipse创建java项目(编码设置为UTF-8,右键properties – resource – utf-8),将下载的webDriver的java相关包拷贝到项目文件夹内,并利用项目右键属性的build path 添加相关jar。添加Junit4测试框架
将driver = new FirefoxDriver(); 改为 driver = new ChromeDriver();
并在实例化前添加驱动路径,做如下修改:
![img][]
检查修改后面操作行的代码,类文件右键— Run as — Junit Test ,查看firefox浏览器是否能够正常回放
![img][]
部分代码贴图:
![img][]
![img][]
![img][]
[img]:
文章永久链接:https://tech.souyunku.com/29684