2014-11-06 48 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) 
     { 
      ... 
     } 
    } 
}