[实践案例]webReading--turnPageTest小札


涉及

1、ajax在IDE上的应用

2、javascript在IDE上的应用

3、如何保存页面上的元素

4、导出RC后根据具体需求做扩展。

5、webreading翻页的判断

6、通过firebug等工具定位ID,取得有用的元素

 

一:应用IDE做基础脚本的准备

1、录制open,翻页,然后回放。哦 ,错了!

 

问题:回放出错

原因:查找资料后,发现因为webreader这个页面的显示是ajax,是局部刷新的,在页面的target还没有完全加载完毕时候,click自然找不到

解决办法:waitForElementPresent,等待某个target出现


 

 

2、翻页怎么翻到最后一页

设想:取到总页数,然后导出rc后,做for循环

操作:取总页数,存起来,在页面上的总页数那边右键,选择storeText,就存好了,可以添加echo来打印看看是不是存成功了。后续在RC中处理下转为int型

 


3、如何判断页面加载成功失败

通过firebug查看html的内容,分析加载失败的页面和加载成功页面,加载中页面,三种状态html元素的不同。

总结得:

  • 加载完毕且成功的页面,id=MainFrame_ViewContainer_BG_1的src的字符串里面有个以PageBGImgHandler开头的图片字符串流。
  • 加载完毕且失败的页面,会存在id=MainFrame_ViewContainer_Wrap_1_fail的元素,它的src的是url+images/imgFailed.png;
  • 加载中的页面id=MainFrame_ViewContainer_BG_1的src的字符串一直未被修改,为原始的 rc="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7

4、根据上面分析我们需要得到id=MainFrame_ViewContainer_BG_1的src的字符串。

查阅资料实验,可以通过javascript来取到

javascript{this.browserbot.getUserWindow().document.getElementById("MainFrame_ViewContainer_BG_1").src}

用echo打印出来到log下看看是不是我们想要的。验证是我们需要的。

 

以上IDE中的基础脚本准备结束。将case导出为Junit4RC。放入Eclipse Maven工程中。

 

二:在RC中根据需求进行扩展。

1、有时候比较麻烦的流程时候可以在本子上大概画出流程图。整理如下


2、建议在case中最好将一些函数在@test外部封装下,然后再在具体的执行case中应用。

根据流程图,编写以上的代码

public int getPageLoadStatus(int pageIndex,int seconds){
int elementPresent=0;
boolean failElementPresent=false;
for(int second=0;;second++){
if(second>seconds){
elementPresent=0;
return elementPresent;
}
try{
String src_bg = selenium.getEval("this.browserbot.getUserWindow().document.getElementById(\"MainFrame_ViewContainer_BG_"+pageIndex+"\").src");
src_bg=src_bg.substring(60, 76);
failElementPresent=selenium.isElementPresent("MainFrame_ViewContainer_Wrap_"+pageIndex+"_fail");
System.out.println(src_bg);
if(src_bg.endsWith(new String("PageBGImgHandler"))){
elementPresent=1;
return elementPresent;
}
else if(failElementPresent){
elementPresent=2;
return elementPresent;
}
}catch(Exception e){
;
}
pause(1000);
}
}

3、在执行case中调用。

String totalPages = selenium.getText("id=totalPages");
System.out.println(totalPages);
totalPages=totalPages.substring(2);
System.out.println(totalPages);
int totalPages_int=Integer.parseInt(totalPages);
FileOutputStream  FileOS=new FileOutputStream(new File("e:\\log.txt"),true);

for(int pageIndex=0;pageIndex<totalPages_int;pageIndex++){
int pageStatus=getPageLoadStatus(pageIndex,1);
verifyEquals(1, pageStatus);
selenium.click("id=cm_next_page");

//保存每一页的状态。

switch(pageStatus)
{
case 0:
FileOS.write(("pageIndex "+pageIndex+" is always loading in the limit time!\r\n").getBytes());
break;
case 1:
FileOS.write(("pageIndex "+pageIndex+" is loaded success in the limit time!\r\n").getBytes());
break;
case 2:
FileOS.write(("pageIndex "+pageIndex+" is loaded fail in the limit time!\r\n").getBytes());
break;
default:
FileOS.write(("pageIndex "+pageIndex+" is not get the status!\r\n").getBytes());

}

4、整理下代码,注释的注释,封装的封装。

三、放在Jenkins上验证执行。


后续根据需要优化,把能参数化的地方提取出来用变量管理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值