Selenium与JavaScript--Selenium深入浅出之三

                    SeleniumJavaScript

                                                                           Selenium深入浅出之三

              

                                                                                         

                                                                                           http://blog.csdn.net/shendl/ 

 

 Selenium全方位解读--Selenium深入浅出之一

 Selenium中文参考手册--Selenium深入浅出之二 

Selenium深入浅出》一书的PDF格式的全文见  http://code.google.com/p/shendl/downloads/list

 

SeleniumEXT

 

EXT使用JS动态生成HtmlCSS代码。

如果未给EXT元素指定id,会使用自增id。无法确定id的值。

如果EXT的界面元素发生变化,id也会发生变化。

Selenium录制工具因此无法定位EXT生成的Web界面

根本原因就是Selenium需要定位html元素,而Ext的很多html元素都是Ext生成的。而且生成的元素的Id都是Ext自动创建的。

解决方法:

Ext为每一个组件分配ID

但是有一些Html元素无法指定ID

Selenium录制工具辅助手工编写测试代码

Selenium可以使用JS代码,操作用户界面的EXT对象。

可以使用Selenium接口的getEval方法在浏览器中执行JS代码。

Selenium接口

java.lang.String getEval(java.lang.String script)

方法,动态执行JavaScript代码。

storeEval (script, variableName )

Arguments:

·        script - the JavaScript snippetto run

·        variableName - the name of a variablein which the result is to be stored.

Returns:

the results ofevaluating the snippet

结果存储在JS的变量名中。

动态执行JavaScript代码的注意点

         通过调用Selenium接口的getEval()等方法可以直接把Java中的JavaScrip代码发送到浏览器中执行。

         但是,这里实际上执行的并不是标准的JavaScripteval()方法。getEval()方法中的JavasScript代码的thisJavaScript中的Selenium对象,而不是window对象。

         如果你需要调用当前页面的window对象的方法,你需要直接指出window对象,如:“window.document.getElementById('foo');”。

        getEval()方法中的JavasScript代码的thisJavaScript中的Selenium对象。请注意这不是Java中的Selenium接口,而是JavaScript中的Selenium对象。JavaScript中的Selenium对象的作用是代表Java中的Selenium接口执行一系列的命令,让浏览器执行。

         另外,Selenium接口的selectFrameselectWindow方法可以修改当前Selenium命令的目标窗口。也就是说,当前的window对象会改变。

 

 

Selenium执行Ext的例子:

protected Selenium browser;

……

this.browser.getEval("window.frames['1000'].window.Ext.getCmp('testId-09').setValue('应严办!');");

 

说明:

    Window是当前Selenium命令的目标窗口,这个当前窗口可以通过Selenium接口的selectFrameselectWindow方法修改!

 

 

Selenium动态执行JavaScript的例子:

 

也可以使用这种方法,在Java端注入javascript代码到页面中动态执行,如:

rowNumStr = this.browser

              .getEval("(function(){"

                     + "vartableLength=0;"

                     + " vartables=window.frames['iframe_00300000000000000003'].window.document.getElementsByTagName('table');"

                     + "for(varj=0;j<tables.length;j++){"

                      + " if(tables[j].className=='x-grid3-row-table'){"

                     + "     tableLength++;"

                     + "   if(tables[j].childNodes[0].childNodes[0].childNodes[1].childNodes[0].innerText=='"

                     +complainIdValue + "' ) {"

                     + "       return tableLength;" + "    }" + "  }"

                     + "}" + "return -1;" + "})();");

 

 

 

       Selenium深入浅出》一文到这里就结束了。读者通过本文应该已经能够完全驾驭Selenium这个独特的Web界面测试工具一展身手了。

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值