6. Web自动化测试

正式开始写Web自动化测试吧。

Xebium脚本分为2部分,一部分为Scenario部分,其作用是把页面操作步骤变为测试场景,具体写法为:

| scenario | 主页元素展示验证 |

| do | open | on | /index.html |

| ensure | do | waitForElementPresent | on | //h2 |

| check | is | verifyText | on | //h2 | 畅销产品 |

在页面上就渲染为:


wiki脚本的页面展示

但是scenario并不是执行的部分(可以点击页面导航栏内的“Test”按钮执行用例),具体的测试部分是用如下脚本来实现的:

| script |

| 主页元素展示验证 |

| scenario2 |

|...... |

script 表格才是真正执行的部分。当然,如果script表格中也用scenario表的执行步骤来写也是可以的,Xebium并不限制你的写法。但scenario和script分离的好处就是我可以在script中重复执行scenario。比如我定义了一个search控件的搜索,包括输入和点击搜索控件操作(前提是search控件在不同页面间都能用某种方式定位),那么给这些步骤一个scenario名称,那么在不同用例的script表格部分加入这个scenario名称,就达到了步骤复用的目的,是不是更加省力呢?



我们再深入下去,我们会看到每一个步骤的第一列都是一个关键词来驱动的,那么有多少关键词达到驱动的目的呢?

1. | start browser | ${BROWSER} | on url | ${url} | 

这句脚本用来启动浏览器,${BROWSER} 是Xebium独特的变量调用方法,用!define BROWSER {firefox}来定义即可,熟悉英文的话,这句话就变的很容易理解。浏览器只要按selnium的webdriver设置,可以用iexplore,chrome,opera,opera-mobile-phone等。

在源码中,相对应的方法参数如下:


启动浏览器,打开url页面

通常来说,这个命令直接放入script在测试用例的SetUp或者测试集的SuiteSetUp内写入,启动待测试页,等待之后的用例执行。

2. | stop browser | 

相对于启动浏览器,关闭浏览器就方便多了,一般就把行直接放在测试用例的TearDown或者测试集的SuiteTearDown内写入。

3. | do | open | on | / |  或者  | ensure | do | click | on | id=kw |

其实两者都是用于执行某个selenium命令操作,区别在于do开头的不做任何检验,只是要求Xebium去执行命令,ensure开头表示做这件事后判断是否执行完成,ensure根据返回值是否符合给定的值来判断是否正确,这里最后一个单元格校验数据不给的情况下,执行成功就是pass。

那么可执行的selenium命令有哪些呢?

"addSelection"

"altKeyDown"

"altKeyUp"

"assignId"

"attachFile"

"click"

"check"

"chooseCancelOnNextConfirmation"

"chooseOkOnNextConfirmation"

"close"

"createCookie"

"controlKeyDown"

"controlKeyUp"

"deleteAllVisibleCookies"

"deleteCookie"

"doubleClick"

"dragdrop"

"dragAndDrop"

"dragAndDropToObject"

"fireEvent"

"focus"

"goBack"

"highlight"

"keyDown"

"keyPress"

"keyUp"

"metaKeyDown"

"metaKeyUp"

"mouseOver"

"mouseOut"

"mouseDown"

"mouseDownAt"

"mouseMove"

"mouseMoveAt"

"mouseUp"

"mouseUpAt"

"open"

"openWindow"

"refresh"

"removeAllSelections"

"removeSelection"

"runScript"

"select"

"selectFrame"

"selectWindow"

"shiftKeyDown"

"shiftKeyUp"

"submit"

"type"

"typeKeys"

"uncheck"

"waitForFrameToLoad"

"waitForPageToLoad"

"waitForPopUp"

"windowFocus"

"windowMaximize"

....................... 

还有很多命令不一一列举了,可以说囊括了所有网页上支持的操作命令(可以查看源码:ExtendedSeleniumCommand.java)。

4. | check | is | assertTitle | test_百度搜索 |

check检查返回值是否是true或者false,如果是true则pass;reject则相反,返回false为pass,selenium的assert基本用check/reject来判断检查结果。




测试脚本如下:


测试脚本

点Test后可以运行,运行结果如下:


Xebium运行结果



自己总结的一些测试经验和思想:

1. 是否这样写太累了,有没有更简便的工具呢?答案是有的,很多人在写前都会用firefox的selenium ide来录制回放,其实只要安装Selenium Xebium Formatter的firefox插件就可以把录制回放结果直接转换成Xebium格式,这样写起来就更得心应手了。

2. selenium测试回放时会出现很多控件未找到的错误,如何解决呢?首先,我们把执行步骤的间隔时间调大,还记得之前一章提到的

|set step delay to|slow | 

这个命令,主要就是把间隔时间调大,当页面全部加载完再去操作可以避免很多问题。另外,如果能和开发沟通,尽量有唯一不变的id或固定的xpath和properties来标识控件,这样也可以避免在不断迭代期间,控件位置的变化而导致无法识别,减少脚本修改的花费。

3. 减少自动化测试消耗的另一个原则是,尽量保持scenario的短小精悍,不要面面俱到的测试,不要把所有测试用例都自动化,不要在web设计都没有定的情况下开始自动化,不要在没有任何数据准备的情况下开发大量脚本,在开发期也尽量少用当某个控件waitForElementPresent来判断(很多时候,控件定位就发生了变化,这个判断会失效)。一个web自动化测试用例,用于regression测试,一般保证页面导航、搜索、或者主流程能正常走通即可,花最少的人力物力情况下把产出最大化。



Web自动化测试介绍到这,大家心里应该有底了,那么如何再进一步开发自己的测试套件来扩展Xebium用途呢?我们在下一章阐述。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容