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

 public boolean doesWebElementExist(WebDriver driver, By selector)
{ try
{
driver.findElement(selector);
return true;
}
catch (NoSuchElementException e)
{
return false;
}
}

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

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

return linkUsername.isDisplayed();
 
这一方法的前提是:该元素之前已经存在,仅仅需要判断是否被显示。
 
现在存在另一种场合,页面元素并不存在,即通过driver.findElement只能在超时之后得到NoSuchElementException的异常。
 
因此只好通过如下方法解决:
 boolean ElementExist (By Locator )
{
  try
  {
    driver.findElement( Locator );
    return true;
  }
  catch(org.openqa.selenium.NoSuchElementException ex)
  {
   return false;
  }
}

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

1、这一方法不属于任何一个page页,因此需要额外进行框架上的变更以支持这些功能函数,否则就必须在每一个用到该函数的page类写一遍。 
2、仍然需要等到超时才能得知结果,当需要频繁使用该函数的时候会造成相当的时间浪费。
 
3.

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

  
4. Xpath 多重判断 
 while(currentPageLinkNumber<MaxPage)
{
  WebElement PageLink;
  PageLink = driver.findElement(By.xpath("//a[@class = 'PageLink' and @title ='"+Integer.toString(currentPageLinkNumber+1)+"']"));
  PageLink.click();
  currentPageLinkNumber++;
//OtherOperation();
}
 
 
转自:http://blog.csdn.net/aerchi/article/details/8057544
 

最新文章

  1. Maven学习(四)-- 生命周期和插件
  2. 第一个WCF的程序
  3. 使用“Empty 模式”改进 Null Object
  4. EF的表连接方法Include()
  5. linux初学 :linux 常用命令(一)
  6. Python自动化运维之3、函数、lambda、递归
  7. ubuntu环境下docker安装步骤
  8. jquery实现抽奖小游戏
  9. 动态求区间K大值(权值线段树)
  10. django的FBV和CBV
  11. bootstrap表格添加按钮、模态框实现
  12. django执行原生sql
  13. Linux 基本操作--文件查看 (day3)
  14. 转《JavaScript中的图片处理与合成》
  15. CS231n: Convolutional Neural Networks for Visual Recognition
  16. [转][CEF]自动播放视频
  17. SYSBIOS学习笔记---线程(Threads)
  18. Eclipse 中 program arguments 与 VM arguments 的区别
  19. php学习七:时间和日期
  20. phpmail发送邮件

热门文章

  1. 图片全部加载完成之后再显示页面ui,公司项目里用上,自己写的几行代码
  2. Nancy之Pipelines三兄弟(Before After OnError)
  3. 表单填写示例(通过JavaScript访问DOM)
  4. C# MVC绑定 List&lt;DapperRow&gt;到bootstrap-table列表
  5. 【Java每日一题】20161216
  6. luogg_java学习_05_面向对象(方法和类)
  7. 转载:《TypeScript 中文入门教程》 5、命名空间和模块
  8. Spring框架IOC容器和AOP解析
  9. ReactNative——打包发布
  10. 对js中this的一点点理解