Selenium2(WebDriver)_如何判断WebElement元素对象是否存在

1. selenium中如果去寻找元素,而元素不存在的话,通常会抛出NoSuchElementException 导致测试失败,但有时候,我们需要去确保页面元素不存在,才是我们正确的验收条件下面的方法可以用来判定页面元素是否存在

 1 public boolean doesWebElementExist(WebDriver driver, By selector)
 2 {
 3
 4         try
 5         {
 6                driver.findElement(selector);
 7                return true;
 8         }
 9         catch (NoSuchElementException e)
10         {
11                 return false;
12         }
13 }         

 

2.一般有这样的应用场合,例如我们要验证在一个网站是否登录成功,那么可以通过判断登录之后是否显示相应元素: 

WebElement linkUsername = driver.findElement(By.xpath("//a[contains(text(),"+username+")]"));

return linkUsername.isDisplayed();

 

这一方法的前提是:该元素之前已经存在,仅仅需要判断是否被显示。

 

现在存在另一种场合,页面元素并不存在,即通过driver.findElement只能在超时之后得到NoSuchElementException的异常。

 

因此只好通过如下方法解决:

 1 boolean ElementExist (By Locator )
 2 {
 3   try
 4   {
 5     driver.findElement( Locator );
 6     return true;
 7   }
 8   catch(org.openqa.selenium.NoSuchElementException ex)
 9   {
10       return false;
11   }
12 }

 但这一方法仍然不理想,有这样两个问题: 

1、这一方法不属于任何一个page页,因此需要额外进行框架上的变更以支持这些功能函数,否则就必须在每一个用到该函数的page类写一遍。 

2、仍然需要等到超时才能得知结果,当需要频繁使用该函数的时候会造成相当的时间浪费。

 

3.

类似于seleniumRC中的isTextPresent 方法 

用xpath匹配所有元素(//*[contains(.,'keyword')]),判断是否存在包含期望关键字的元素。 
使用时可以根据需要调整参数和返回值。 

 1 public boolean isContentAppeared(WebDriver driver,String content) {
 2       boolean status = false;
 3       try {
 4           driver.findElement(By.xpath("//*[contains(.,'" + content + "')]"));
 5           System.out.println(content + " is appeard!");
 6           status = true;
 7       } catch (NoSuchElementException e) {
 8           status = false;
 9           System.out.println("'" + content + "' doesn't exist!"));
10      }
11      return status;
12  }  

详细xpath介绍请见:http://www.w3school.com.cn/xpath/

  

4. Xpath 多重判断 

1 while(currentPageLinkNumber<MaxPage)
2 {
3   WebElement PageLink;
4   PageLink = driver.findElement(By.xpath("//a[@class = 'PageLink' and @title ='"+Integer.toString(currentPageLinkNumber+1)+"']"));
5   PageLink.click();
6   currentPageLinkNumber++;
7 //OtherOperation();
8 }

 

 

 

转自:http://blog.csdn.net/aerchi/article/details/8057544

 

时间: 2024-10-03 08:48:14

Selenium2(WebDriver)_如何判断WebElement元素对象是否存在的相关文章

Selenium2(webdriver)_定位不到元素常见原因及解决办法

在做web应用的自动化测试时,定位元素是必不可少的,这个过程经常会碰到定位不到元素的情况,一般可以从以下几个方面着手解决: 1.Frame/Iframe原因定位不到元素: 这个是最常见的原因,首先要理解下frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位.   2.Xpath描述错误原因: 这种情况有可能是: 1.xpath语法规则书写错误,这个木有办法,补下xpath的语法,多写写,练

动态更改网页HTML元素(对象)内容_经验交流

动态HTML的出现为用户提供了一种基于传统标准HTML来创建交互式页面的机制.本文主要针对IE 5.0谈谈如何通过其提供的HTML文档对象(DOM)模型使用脚本添加.删除.修改页面中的HTML元素(对象)及元素(对象)内容. 动态更改网页HTML元素(对象)内容 HTML块级元素(对象)提供的4个可读写属性innerHTML.innerText. outerHTML.outerText来更改元素(对象)内容(如表1所示). 当设置innerHTML属性时,给定字符串完全替换现有的元素(对象)内容

Selenium2(WebDriver)总结(四)---基本元素操作

 WebDriver提供了常用的WEB控件的操作方法,比如:按钮.输入框.超链接等,废话不多说,直接上代码: import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui

jQuery 判断页面元素是否存在的代码_jquery

例如: 复制代码 代码如下: document.getElementById("someID").innerText("hi"); 如果ID为"someID"的元素不存在,我们将得到Javascript运行错误:document.getElementById("someID") is null 正确的写法应该是: 复制代码 代码如下: obj = document.getElementById("someID&quo

Selenium2+python自动化11-定位一组元素find_elements

前言     前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象. webdriver 提供了定位一组元素的方法,跟前面八种定位方式其实一样,只是前面是单数,这里是复数形式:find_elements 本篇拿百度搜索作为案例,从搜索结果中随机选择一条搜索结果,然后点击查看. 一.定位搜索结果     1.在百度搜索框输入关键字"测试部落"后,用firebug查看页面元素,可以看到这些搜索结果有共同的属性.   

万彩动画大师怎么隐藏元素对象

  万彩动画大师怎么隐藏元素对象?添加元素对象能丰富动画视频,带来良好的视觉效果.而隐藏元素对象方便动画视频的内容编辑,具体操作如下: 1.全部元素对象隐藏 点击隐藏按钮可全部隐藏或显示元素对象. 2.部分元素对象隐藏 在元素对象动画条左侧,点击隐藏图标即可隐藏该元素对象.

万彩动画大师为元素对象怎么设置合适的动画显示时长

  万彩动画大师怎么为元素对象设置合适的动画显示时长?为元素对象设置合适的动画显示时长能更好地展示元素对象.操作如下: 1.添加元素对象-设置动画效果 添加元素对象(图形.图片.文字.音乐.视频.flash.特殊符号等)后,为元素对象设置动画效果(入场.强调.退场). 2.单击对象动画条-拖动动画条-设置动画时长 选中元素对象,把鼠标移动到该元素对象的动画条,往左右拖动动画条可改变动画显示时长.

jQuery判断一个元素是否可见的方法

  本文实例讲述了jQuery判断一个元素是否可见的方法.分享给大家供大家参考.具体如下: jQuery 可以很容易地确定一个元素是可见的或是隐藏的,然后分别做不同的处理.如:我想根据某 div 是否可见,在按钮上显示不同的文字和图标.可以这样实现: 方法一: ? 1 2 3 4 5 6 7 8 9 10 11 $('#para_div button').click(function() { if($(this).next().is(":visible")) { //$(this).h

javascript获取鼠标点击元素对象

 本篇文章主要介绍了利用javascript获取鼠标点击元素对象的示例代码.需要的朋友可以过来参考下,希望对大家有所帮助 IE: var obj=document.elementFromPoint(event.clientX,event.clientY);   获取对象文本 var a=obj.innerText   FF里面要在事件里面添加对象才可以读取坐标.   HTML: onclick="gj(event)"   JS:      代码如下: function gj(event