怎样在WebDriver里判断WebElement元素对象是否存在

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<wbr>linkUsername.isDisplayed();</wbr>

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

现在存在另一种场合,页面元素并不存在,即通过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')]),判断是否存在包含期望关键字的元素。
使用时可以根据需要调整参数和返回值。
Java代码收藏代码
  1. publicbooleanisContentAppeared(WebDriverdriver,Stringcontent){
  2. booleanstatus=false;
  3. try{
  4. driver.findElement(By.xpath("//*[contains(.,'"+content+"')]"));
  5. System.out.println(content+"isappeard!");
  6. status=true;
  7. }catch(NoSuchElementExceptione){
  8. status=false;
  9. System.out.println("'"+content+"'doesn'texist!"));
  10. }
  11. returnstatus;
  12. }

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


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();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值