申艳超-博客

搜索引擎、分布式、高性能、NLP、ElasticSearch、Solr

0%

AdvancedUserInteractions(高级用户交互)

入门

高级用户交互API提供了一个更新更完善的机制来定义并描述用户在一个网页上的各种操作。这些操作包括:拖拽、按住CTRL键选择多个元素等等。

开始(short how to)

为了生成一连串的动作,我们使用Actions来建立。首先,我们先配置操作:

1
2
3
4
5
6
Actions builder = new Actions(driver);

builder.keyDown(Keys.CONTROL)
.click(someElement)
.click(someOtherElement)
.keyUp(Keys.CONTROL);

然后,获得操作(Action):

1
Action selectMultiple = builder.build();

最后,执行这个动作:

1
selectMultiple.perform();

这一系列的动作应该尽量的短。在使用中最好在执行一个简短的动作后验证页面是否处于正确的状态,然后再执行下面的动作。下一节将会列出所有可用的动作(Action),并且说明它们如何进行扩展。

Read more »

WebDriverJS

WebDriver 的 JavaScript 语言绑定。本文包含以下内容:

  • 介绍
  • 快速上手
    • 在 Node 中运行
    • 在浏览器中运行
  • 设计细节
    • 管理异步 API
    • 同服务端通讯
    • /xdrpc
  • 未来计划

介绍

WebDriver 的 JavaScript 绑定(WebDriverJS),可以使 JavaScript 开发人员避免上下文切换的开销,并且可以让他们使用和项目开发代码一样的语言来编写测试。WebDriverJS 既可以在服务端运行,例如 Node,也可以在浏览器中运行。

警告: WebDriverJS 要求开发者习惯异步编程。对于那些 JavaScript 新手来说可能会发现 WebDriverJS 有点难上手。

Read more »

Selenium Grid

快速上手

如果你对 Selenium 自动化测试已经非常熟悉,你仅仅需要一个快速上手来使程序运行起来。本章节的内容能满足不同的技术层次,但是如果你仅仅需要一个可以快速上手的指引,那么就显得有点多。如果是这样,你可以参考 Selenium Wiki 的相关文章。

什么是 Selenium-Grid ?

Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也就是说,你可以同时运行多个测试。本质上来说就是,Selenium-Grid 支持分布式的测试执行。它可以让你的测试在一个分布式的执行环境中运行。

Read more »

Selenium WebDriver

注意:本章内容官方团队正在完善中。

介绍 WebDriver

Selenium 2.0 最主要的一个新特性就是集成了 WebDriver API。WebDriver 提供更精简的编程几口,以解决 Selenium-RC API 中的一些限制。WebDriver 为那些页面元素可以不通过页面重新加载来更新的动态网页提供了更好的支持。WebDriver 的目标是提供一套精心设计的面向对象的 API 来更好的支持现代高级 web 应用的测试工作。

同 Selenium-RC 相比,WebDriver 如何驱动浏览器的?

Selenium-WebDriver 直接通过浏览器自动化的本地接口来调用浏览器。如何直接调用,和调用的细节取决于你使用什么浏览器。本章后续的内容介绍了每个 “browser driver” 的详细信息。

相比 Selenium-RC ,WebDriver 确实非常不一样。Selenium-RC 在所有支持的浏览器中工作原理是一样的。它将 JavaScript 在浏览器加载的时候注入浏览器,然后使用这些 JavaScript 驱动 AUT 运行 WebDriver 使用的是不同的技术,再一次强调,它是直接调用浏览器自动化的本地接口。

Read more »

Selenium 1 (Selenium RC)

介绍

正如你在 Selenium 项目简史里读到的,Selenium RC 在很长一段时间内都是 Selenium 的主要项目,直到 WebDriver/Selenium 合并而产生了最新和最强大的 Selenium 2。

Selenium 仍然被活跃的支持(大部分是维护工作),并且提供了一些 Selenium 2 短期不会支持的特性,包括支持多语言 (Java, Javascript, Ruby, PHP, Python, Perl 和 C#) 和支持几乎所有的浏览器。

Selenium RC 如何工作

首先,我们将讲述 Selenium RC 的组件如何操作,以及在测试脚本运行时各自扮演的角色。

RC 组件

Selenium RC 组件是:

Selenium Server 能启动和杀死浏览器进程,解析并运行由测试程序传递过来的 Selenese 命令,并且可以是一个 HTTP 代理,拦截和验证浏览器和 AUT(测试中的应用)之间的 HTTP 通信。

Read more »

介绍

用于网站应用的测试自动化

如今,大多数软件应用都是跑在浏览器中的网站应用。不同公司和组织之间的测试效率迥异。在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发,因此测试自动化也成为软件项目的必备部分。测试自动化意味着使用软件工具来反复运行项目中的测试,并为回归测试提供反馈。

测试自动化有很多优点。大多数都和测试的可重复性和高执行效率这两点相关。市面上有一些商业或开源的同居来辅助测试自动化开发。Selenium 应该是最广泛使用的开源方案。本文档将帮助新手和有经验的使用者学习为网站应用创建测试自动化的有效技术。

本文档介绍了 Selenium,其细节和从社区中积累的最佳实践。其中包含很多范例。同时,也将提及 Selenium 的一些技术细节和推荐用法。

对于一个软件团队的测试过程来说,测试自动化具有提高长期效率的优势。测试自动化包括:

  • 频繁的回归测试
  • 快速反馈
  • 几乎无限制的测试用例迭代执行
  • 支持敏捷和极限编程
  • 遵循测试用例的文档
  • 自定义缺陷报告
  • 能找出手工测试中没发现的缺陷
    Read more »

Maven in 5 Minutes

maven官方文档的入门章节就介绍了如何创建一个maven项目。大致如下:

1
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

我相信,很多人都是从这里开始的。但是为什么是这样呢?这里面都是怎么实现的?
其实,这里面是maven archetype的作用。它可以根据模板为你生成样例项目。

Read more »

URL语法

完整的URL是建立在由以下9个部分构成的通用格式上的。

1
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

其中各个部分代表:

  • scheme(方案):使用的哪种协议;默认无
  • user(用户):用户名;默认匿名
  • password(密码):密码
  • host(主机):服务器主机名或点分IP地址
  • port(端口):服务器监听端口。不同协议,默认值不一样,HTTP默认80
  • path(路径):/分割的资源路径
  • params(参数):名/值对,使用;分割。
  • query(查询):名=值对,用&分割多个
  • frag(片段):小片资源的名字。在html就是一个锚点名了。自动从锚点开始显示。
    Read more »

从高中时代最早接触计算机,当初什么都不懂,能会用下email就绝对是达人了啊.最早见到OS应该是windows 95,那时候虽然已经出了windows 98,不过学校仍预装的是windows 95.

高中时期,就感觉计算机挺新奇,很感兴趣,至于具体会发展到什么样也不清楚.大学报考时间果断选择了计算机科学与技术这一专业.从此就走上了这一不归路.

大学时期对计算机有了更深刻的认识,也知道除了windows之外还有一个linux的东西所在.这期间先后给自己的机器安装过红帽,安装过国产的红旗.不过这些东西也都没有什么深入,安装后发现也很不好用,不得已而放弃掉.

研究生期间有更多的linux伙伴,有人在用也有人给推荐.那个时候选择了ubuntu作为自己首选,因为大家推荐说资源多,新人入手容易.那个时候应该是9.04左右的版本.

工作后,接触到了更多的服务器,也经历了各种在windows下的程序无法很好在linux运行的情况,因此下决心学习.私人的笔记本装上了ubuntu 10.04,不过公司的工作电脑还是没敢做成ubuntu系统,只是弄了一个虚拟机.

大概在大半年以前,我下定了决心,把系统给完全换成了ubuntu,版本也升到了12.04.这时的系统已经足够成熟,几乎可以满足工作的需要.而最近发布的ubuntu 13.04则更加的完善,各种替代软件都可以找到.

个人常用软件推荐:

  • office: wps for linux or libreoffice
  • 输入法: sogou for linux
  • 开发IDE: Intellij IDEA or Eclipse
  • 编辑器: sublime,retext
  • 浏览器: chrome,firefox
  • 邮件客户端: thunderbird

Jenkins是一款目前最为流行的持续集成工具,那么,如何让Karma的能集成到Jenkins,并自动执行呢?

前提条件

Jenkins Server上(可以是Master,也许是Slave结点,总之在那个Server上跑,就需要安装),安装:

  • Node
  • Karma

配置Karma.conf.js文件

必须保证:

1
singleRun = true;

只有这样,才能保证运行Test后,浏览器自动退出,不影响下次执行。
在Jenkins中,也许你想查看测试结果,这个时候可以借助junit reporter。

1
2
3
4
reporters = ['junit'];
junitReporter = {
outputFile: 'test-results.xml'
};

那么,Junit格式的测试结果就存到了test-results.xml中。

另外一种情况,我可能还想查看一下代码覆盖率。Karma也是支持的,要进行以下的配置:

1
2
3
4
5
6
7
8
9
10
reporters = ['coverage'];

preprocessors = {
'src/*.js': 'coverage'
};

coverageReporter = {
type : 'cobertura',
dir : 'coverage/'
};

这里,reporters指出了要生成coverage报告。preprocessors指明了要统计覆盖率的源码。coverageReporter里,指明type为cobertura,dir则是报告路径。type用多种选择,其中cobertura为Jenkins专属的。

Read more »