Selenium的getXpathCount方法的实际问题解决

来源:互联网 发布:excel数据录入程序 编辑:程序博客网 时间:2024/05/16 02:02

getXpathCount方法的问题解决     


使用该方法会出现很让你头疼的问题,当你要得到的元素被包含在IFrame中时,如果你直接用getXpathCount方法时,返回值为0;可能你所测试页面还加入了ajax的东西,比如弹出层,类似结构如下: 

<DIV id="div_1"> 

        <IFRAME> 

                 <HTML> 

                         <HEAD>...</HEAD> 

                                  <BODY> 

                                         <TABLE> 

                                                 <TR>...</TR> 

                                                 ... 

                                                 ... 

                                         </TABLE>       

                                  </BODY> 

                 </HTML> 

        </IFRAME> 

</DIV> 

如果你想得到body里面类似TR个数的内容时,如上所说,返回值就会是0。因为这个元素被放置在IFRAME里。所以在使用该方法之前首先要选中该IFRAME。


方法如下: 

selenium.selectFrame("xpath=//div[@id='div_1']/iframe"); 

Number c = selenium.getXpathCount(....);  //此处就是你要得到的元素内容 

int  count = c.intValue(); 

System.out.println("当前元素个数为 " + count); 

当你使用上面方法后,应该会解决。但可能由于页面使用了Ajax,所以得到值依然会是0。所以这便是要解决的最终问题。其实方法相当简单 

Thread.sleep(4000);  //将该句加入到上面代码最前边。当然这样也存在某些问题,比如说服务器太慢而会导致同样返回0,但目前这样做也是最直接有效地!~ 

你同样可以用selenium.waitForCondition()来代替Thread.sleep()方法