Selenium2_如何判断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')]),判断是否存在包含期望关键字的元素。 
使用时可以根据需要调整参数和返回值。 
 
   
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 }
复制代码
复制代码
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Selenium可以使用find_element_by_*方法来查找元素,如果元素存在,则返回WebElement对象,否则会抛出NoSuchElementException异常。因此,可以通过捕获异常来判断元素是否存在。另外,也可以使用find_elements_by_*方法来查找元素,如果返回的列表长度大于,则表示元素存在。 ### 回答2: Selenium是一个在web应用程序中自动化测试的工具。判断元素是否存在是一个非常重要的操作之一。在Selenium中,判断元素是否存在有多种方法。以下是其中几种常见的方法: 1. 使用find_element()方法查找元素并捕获异常。如果元素存在,则返回该元素。如果元素不存在,则会抛出NoSuchElementException异常。 例如: try: element = driver.find_element_by_id("element_id") except NoSuchElementException: print("元素不存在") 2. 使用find_elements()方法查找元素并检查长度。如果该方法返回一个长度大于0的列表,则表示元素存在。如果该方法返回一个长度为0的列表,则表示元素不存在。 例如: elements = driver.find_elements_by_id("element_id") if len(elements) > 0: print("元素存在") else: print("元素不存在") 3. 使用is_displayed()方法检查元素是否可见。如果元素可见,则返回True。如果元素不可见,则返回False。 例如: element = driver.find_element_by_id("element_id") if element.is_displayed(): print("元素可见") else: print("元素不可见") 以上是Selenium中常见的几种判断元素是否存在的方法。根据具体情况和需求,选择合适的方法进行判断。 ### 回答3: Selenium是一种非常流行的Web自动化测试工具,它可以帮助开发人员简化测试过程,而判断元素是否存在是测试中的一个关键步骤。 一般情况下,判断元素是否存在主要通过WebElement接口的isDisplayed()、isEnabled()和isSelected()这三个方法实现。其中,isDisplayed()方法主要用于检查元素是否可见,isEnabled()方法用于检查元素是否可编辑,isSelected()方法用于检查元素是否被选中。 除此之外,Selenium还可以使用findElement()和findElements()方法来查找元素,其中,findElement()方法会在页面中查找第一个匹配的元素,如果找不到,则会抛出NoSuchElementException异常;而findElements()方法则会查找页面中所有匹配的元素,并返回一个包含所有匹配元素的列表。 此外,Selenium还提供了一些高级的元素查找方式,如XPath和CSS Selector等,通过这些方式可以非常精确地查找元素。不过需要注意的是,如果使用这些高级方式进行元素查找,可能会对测试性能产生影响,因此需要合理使用。 总而言之,判断元素是否存在Web自动化测试中非常重要的一个步骤,Selenium提供了各种方式来实现元素查找和判断,开发人员需要根据具体需要,选择合适的方式来进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值