framework ajax获取,使用Robot Framework测试AJAX

Ajax是现在使用非常广泛的一种技术,它在不重新刷新整个页面的情况下实现了客户端与服务器端的动态交互和页面内容变更。基于上述特性,在使用Robot

Framework对Ajax进行测试的时候就需要一些特殊的操作。

下面举一个例子来说明这些:

为了方便大家自己尝试,我找一个在线的最简单的AJAX例子(W3School是个好网站):

这个例子的源代码如下:

function loadXMLDoc()

{

var xmlhttp;

if (window.XMLHttpRequest)

{// code for IE7+, Firefox, Chrome, Opera,

Safari

xmlhttp=new XMLHttpRequest();

}

else

{// code for IE6, IE5

xmlhttp=new

ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function()

{

if (xmlhttp.readyState==4

&& xmlhttp.status==200)

{

document.getElementByIdx_x_x("myDiv").innerHTML=xmlhttp.responseText; }

}

xmlhttp.open("GET","/ajax/demo_get.asp",true);

xmlhttp.send();}

AJAX

οnclick="loadXMLDoc()">请求数据

id="myDiv">

红色部分的关键代码说明:当点击“请求数据”这个按钮时

我们以异步的形式发送XMLHttpRequest,并且动态生成了一部分DOM内容,而这是以不刷新页面为前提的。

Robot Framework的Selenium库中,我们使用Click

Button关键字来点击按钮。默认的情况下关键字认为页面会刷新,如果不刷新就会发生超时错误。

请看下面代码:

TestAjax

Setting

Value

Library

Selenium Library

Test Case

Action

Arguments

Start Selenium Server

Maximize Browser Window

click button

xpath=//button[1]

Page should contain

本内容是使用 GET 方法请求的

Stop selenium Server

运行后我们看日志,从下图的日志截图中我们看出,在点击按钮后出现了500错误,这是因为Click button期待页面刷新,而页面没有刷新。a4c26d1e5885305701be709a3d33442f.png

为了解决这个问题,我们应该在 click button 关键字的后面加上 don't

wait参数,这样就不会出现500错误了。

click button

xpath=//button[1]

don't wait

修改后我们继续运行一遍测试用例,没有500错误出现,但这次却出现了其他错误。

TestFail | FAIL |

Page should have contained text '本内容是使用 GET 方法请求的' but did not

这又是为什么呢?

记住。Ajax的刷新是异步的,返回文字需要时间。而由于使用了don't wait参数,Robot

Framework直接执行了下一个关键字 Page should contain,此时返回文字这时还没有出现,自然会失败。

这时候我们就用到了另外一个关键字 Wait Until Page

Contains

我们将Page should

contain 这一句换成下面这一句(第二个参数5000指的是等待5000毫秒,超过后就抛出超时错误)。

Wait Until Page Contains

本内容是使用 GET 方法请求的

5000

这样再次运行测试用例,就得到TestPass了。

拓展

上述的例子只是实现了最简单的对Ajax的测试方法。由于JavaScript代码能写得各式各样,因此测试用例的写法也会不尽相同。但是本质上AJAX就两个关键点:异步和动态DOM变更。只要抓住这2点,基本上什么都难不倒你了。下面的几个关键字应该能搞定绝大部分AJAX测试:

尤其是Wait For

Condition,由于能够直接访问JavaScript代码,它异常强大,值得关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值