安装好配置环境后,开始我的selenium之旅。简单的了解一下色,selenium大家庭的组成。
Selenium是ThoughtWorks专门为 Web 应用而开发的功能测试工具。Selenium使用JavaScript和Iframes在浏览器嵌入自动化测试引擎,可以在任何支持JavaScript的浏览器中进行工作,模拟用户在浏览器中进行的操作。Selenium的强大之处就在于可以使用集成开发环境,让用户使用自己最熟悉的开发语言进行调试操作。
Selenium的优势:
1)它是开源的
2)简单,易于安装,易于工作
3)提供Selenium IDE ,一个FireFox plugin,能自动记录用户的操作,生成测试脚本。生成的测试脚本可以基于Selenium RC放入Java,C#,Ruby的单元测试用例中自动运行。selenium ide是selenium的唯一可以在浏览器窗口上记录用户行为的组件
4)除了火狐上的事件外不会记录你电脑上的任何其他事件
5)Selenium支持多种浏览器,能够运行与多种操作系统,因此更容易帮助测试人员发现应用程序在不同浏览器上的兼容性问题。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性.
6)通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序;可以操作 Web 页面上的各种元素,诸如:点击按钮、输入文本框,以及断言 Web 页面上存在某些文本与 Web 元素等。
7)测试用例调用实际的浏览器(如IE、FireFox)来执行测试。和有些开源方案自行实现Web解释引擎相比,实际的浏览器能模拟更多用户交互和JS语法。 8) SELENIUM录制的脚本比较灵活,因为它生成的是PERL的脚本程序。作为几乎最为强大和最广泛使用语言之一,PERL这种程序给予我最大的灵活性和控制度。
Selenium IDE 支持并且只支持 Firefox 浏览器,支持的浏览器太少,而依附于 Firefox 也不便于日后开展自动化测试,但是,它的录制快捷好用!并且有代码 转换功能,可以把 Selenium 语言测试案例转为 C#,Java 等语言的测试案例,使用 Selenium IDE + FireBug 进行测试案例的编写,然后转为其他语言的测试案例后,再调用 Selenium RC运行测试案例。
Selenium RC 它支持很多浏览器,可以使用 C#,Java 等语言编写测试案例,易于维护,同时提供了很好的扩展性,将使用Selenium RC 测试工具。
selenium 和 WebDriver 合幵后创建了一个新的 Selenium 2 框架。 Selenium 是一个针对网页应用测试非常好的框架。他有着一些积极的影响。WebDriver 也不像 Selenium 1 一样需要一个代理。你可以直接和浏览器进行对话。这也非常受人们欢迎的,因为可以加快测试的执行速度,不需要一个“中间人”进行传递消息。
Selenium IDE:右Command、target、value组成的表格就是脚本,每个脚本都是一条条的action行为组成,action有CTV 三者组成,command就是api中的各种函数,target就是web中的某个目标对象,比如:输入框、按钮等,使用xpath选取对象。Value:根据实际内容填写。
在这里可以手动的增加两种页面校验:verify和assert。他们都能对显示内容,输出内等做验证,区别在于:
verify:验证失败了,会抛出期望结果不存在的错误,但是测试过程会继续执行下面的步骤,但会显示成淡红的。
assert:验证失败,测试不会继续执行下去。
Selenium 没有指明会等到需要交互的元素出现,所以你最好等到需要交互元素出现时再迕行交互,即利用wait指令。如带有下拉菜单,带有ajax的页面都要有所等待,等页面元素准备好了再进行下一步的操作。
Selenium RC:有两部分组成
Selenium Server:负责控制浏览器行为,包括三个部分:launcher、http proxy、Selenium core,其中Selenium core是Selenium server嵌入到浏览器页面中的,Selenium core是一堆JS函数的集合,从而实现对浏览器的操作。
Selenium Clientlibrary:写测试案例时用来控制server的库。
支持很多浏览器,可以使用C#,Java 等语言编写测试案例,易于维护,同时提供了很好的扩展性。
Selenium Grid 允许创建很多个 Selenium RC实例,由一个中心来发送 Selenium RC命令。拥有一个中心点 Hub, 测试可以连接到此点, 测试命令会推送到连接在此集线器上的Remote RC 实例上。 这个中心有一个 web 界面(localhost:4444/console), 告诉你连接在此集线器上的Selenium RC 实例,和返些实例是否正在使用的状态。
# 启动Selenium Server
java –jar selenium-server-standalone-2.22.0.jar -port 4444
# 启动Selenium Grid的Hub
java –jar selenium-server-standalone-2.22.0.jar -port 4000 -role hub
# 启动Selenium Grid的Node,其中的-hub参数,是Selenium Grid的Hub的URL
java -jar selenium-server-standalone-2.22.0.jar -port 4001 -role node -hub http://127.0.0.1:4000/grid/register
#显然,可以启动多个Node:
java -jar selenium-server-standalone-2.22.0.jar -port 4002 -role node -hub http://127.0.0.1:4000/grid/register
WebDriver
WebDriver 提供一个先进技术来定位 web 页面元素。其实WebDriver就是基于Selenium的一个自动化测试类库,但它不再是运行在浏览器内的JS程序,而是自己可以控制浏览器。webdriver提供了很多方式来定位元素,对于不同平台的语言都有相关的api,如C#、java、python、ruby等等。
前段时间利用空余的时间学习这方面的知识,现将其一点点的整理出来。