2014-11-06 36 views
0

我有代码:硒的webdriver与Java - 如何添加 “其他” 条件

public void setList(By localizator, String v_value { 
     Select some_list = new Select(driver.findElement(localizator)); 
     for(WebElement position_list : some_list.getOptions()) { 
      if(position_list.getText().equalsIgnoreCase(v_value)) { 
       some_list.selectByVisibleText(position_list.getText()); 
       break; 
      } 
     } 

    } 

如何添加条件:如果硒没有找到position_list.getText()equalsIgnoreCase(v_value),然后系统。抛出新的RuntimeExpression?

回答

0

使用iterator而不是foreach,它提供了一个hasNext()方法,您可以使用该方法检查您当前是否正在处理列表的最后一个元素。

Iterator<WebElement> iterator = some_list.getOptions().iterator(); 

和随后而不是你的foreach:

while(iterator.hasNext()) { 
    WebElement current = iterator.next(); 
    if(current.getText().equalsIgnoreCase(v_value)) { 
      current.selectByVisibleText(position_list.getText()); 
      break; 
     } 
    if(!iterator.hasNext()){ 
    throw new RuntimeException(); 
    } 
} 
0

从我在你的代码中看到的只是一个建议。

当您使用some_list.selectByVisibleText(position_list.getText());selectByVisibleText(..)方法已经设置遍历所有可用的选项,并选择您传递文本参数相匹配的人。把呼叫循环检测可用的选项里面是不理想的,如果你正在寻找抛出异常。

而且,假设你有下面的代码 -

public void setList(By localizator, String v_value { 
    Select some_list = new Select(driver.findElement(localizator)); 
    some_list.selectByVisibleText(position_list.getText()); 
    .... 
} 

在这种情况下selectByVisibleText将抛出一个NoSuchElementException("Cannot locate element with text: " + text);的情况下,该选项不可选择。你应该能够捕捉到并抛出一个运行时异常。

0

我想简单回答你的问题是一个尝试捕捉

public void setList(By localizator, String v_value { 
Select some_list = new Select(driver.findElement(localizator)); 
for(WebElement position_list : some_list.getOptions()) { 
    try{ 
      if(position_list.getText().equalsIgnoreCase(v_value)) { 
       some_list.selectByVisibleText(position_list.getText()); 
       break; 
      } 
     } 
     catch(RuntimeExpression ex) 
     { 
      ... 
     } 
    } 
}