Sahi系列:Sahi简介及Sahi的优势 ——摘自developerworks

Sahi系列:Sahi简介及Sahi的优势 ——摘自developerworks这个算是我目前看到的比较全面的讲解Sahi的一篇文章,在这里记下自己认为需要了解的部分。目前英语确实不太好,看官网有点吃力!希望五年后可以像看中文网页一样舒服!Sahi简介Sahi是TytoSoftware旗下的一个基于业务的开源Web应用自动化测试工具。Sahi运行为一个代理服务器,

大家好,欢迎来到IT知识分享网。

这个算是我目前看到的比较全面的讲解Sahi的一篇文章,在这里记下自己认为需要了解的部分。目前英语确实不太好,看官网有点吃力!希望五年后可以像看中文网页一样舒服!

 

Sahi简介

Sahi 是 Tyto Software 旗下的一个基于业务的开源 Web 应用自动化测试工具。Sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素(所以可能有些功能无法实现,也属正常)。Sahi 支持 HTTPS 并且独立于 Web 站点,简单小巧却功能强大。它相对于 Selenium 等自动化测试工具,在动态 ID 元素查找和隐式页面等待处理等方面具有一定的优势。选择 Sahi 工具来实现具体 Web 项目的自动化测试是一个很不错的选择。

 

特性和优势

Sahi系列:Sahi简介及Sahi的优势 ——摘自developerworks

 

Selenium 支持的脚本语言比较丰富,且自带 Selenium IDE 自动录制工具,Watir 执行的速度相对其他较快。而 Sahi 同样具备了自带的录制器,且支持几乎所有浏览器,且对 JS 支持较好,拥有页面等待判断机制,内置 Java 异常报告支持 Ajax 等优势。

 

基于上下文的页面识别机制:

大多数如 Selenium 等 Web 自动化测试工具或是自动化框架,都采用类似基于 DOM 的定位策略、Xpath 定位策略和 id、name、identifier 等页面元素定位策略。
identifier 识别 username 元素的定位策略:identifier=username。
Id 定位是在知道元素具体 id 特征的情况下的一种更精确定位。
定位页面元素 loginFrom:id=loginFrom。
name 定位方式是去识别第一个匹配名称属性的 UI 元素。(多个元素拥有相同的名称属性,可以使用 value 过滤器来进一步优化您的定位策略)。
定位页面元素为 username:name=username。
Xpath 定位是在 XML 中定位元素的方法,而 HTML 可以被看作是 XML 的一种实现。
Xpath 定位绝对路径:html/body/div[1]/div[1]/div[3]/div[1]/form/span/input[1]。
Xpath 定位相对路径查找://div[@id=’fm’]/form/span/input。

在实际的情况下,页面元素并非如预期般明确。许多的元素值如 ID、Name 等在代码中并不是必须的,常常会缺省。并且,属性值往往不是唯一对应的,页面中有时会存在相同属性的元素。当缺省 id 值或是 Xpath 定位失效时,上述这几种查找定位方式往往显得无助和脆弱。

Sahi 采用了一种主动查找的机制,它不受限于特定的元素属性。在没有 ID、Name 值的情况下,它可以使用一些如“title,value”等属性,这些都是页面可见的属性,所见即所得。Sahi 会通过传入这些可见可识别的属性值,来按照 Sahi 预设的机制进行查找识别。Sahi 允许开发者对每一种元素设置不同属性和特定的查找顺序,包括那些自定义的属性名。所以 Sahi 相对于其他的 Web 自动化测试工具更灵活更开放。
_link(“valueName”)用来定位一个定义为“valueName”的 link,这里的 valueName 并不一定是 value 的属性值,也可以是它的 id、title 等。

Sahi 主要提供了三种基于上下文的元素 API_in_near_under
_in 是指在某个 DOM 节点下查找某个元素。
_near 是指在某个元素附近查找相应设定规则条件的最近一个元素。
_under 是指在某个元素下方开始查找,一般_under 都适用在具有相同偏移量的同一列中

Sahi API 中的 identifier 参数都支持正则表达式,例如,_div(/name.*/) 用来识别所有以某种预属性值是 name 开头的 div。

 

隐式页面加载响应等待机制:

当前一般的 Web 自动化测试工具没有一个智能的处理机制,来判断何时可以继续下一个操作
像 Selenium 等自动化测试工具通常会在脚本中人为来设定一个固定的等待时间。但这往往被证实不一定是准确的。实际测试中,人是很难准确判断每一个操作请求需要的合理时间数值。因为,等待时间设置过短,下一步操作在被测应用请求还未返回就执行了,或是由于网络因素使正常的响应时间变长,都可能导致测试过程找不到相应的页面元素,从而导致整个测试用例失败的情况。而如果把时间设置过长,又会造成在一些正常响应过程中的不必要等待的时间浪费,降低了测试效率。
一些测试人员会在自动化测试脚本中加入一些自定义的代码。通过轮询界面上某个指定元素,来判断请求响应是否返回,进而决定继续下一步操作或者是超时。但是,这样的查找过程会导致整个脚本代码变得非常臃,加大了开发的成本。更何况,在一个动态的页面找到指定的元素本身就不是一件容易的事。

Sahi 内置了智能的页面等待机制,能够自动判断 Ajax 请求是否已经处理完毕,然后继续下一步操作。并且,这一点对于用户是“隐式”的,不需要增加额外的代码。

 

个人感觉:对于Sahi的自动定位我有些许疑惑,总感觉定位不太行,不知道是我不会用还是真的在定位这方面有缺陷,我无法自动录制后回放,所以我一般都是自己先手动去定位,然后写成脚本,主要就是利用Sahi来进行回放操作,以此来进行回归测试,目前还处于使用Sahi进行自动化测试的初期,或许Sahi的定位优势会在之后被我查找出来。

 

本文摘自http://www.ibm.com/developerworks/cn/web/1403_yangxb_sahi/#icomments

 仅用于个人知识总结使用!

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32639.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信