2014-09-05 55 views
0

我有一個如何讓我的方法是使用Wait.Until忽略拋出異常硒的webdriver

private boolean findElements(
            String xpath, 
            int timeOut) { 

     WebDriverWait wait = new WebDriverWait(driver, timeOut); 

     try { 
      if(wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath))) != null) { 
       return true; 
      } else { 
       return false; 
      } 
     } catch(NoSuchElementException e) { 
      e.printStackTrace(); 
      return false; 
     } 

    } 

當元素被發現返回true的方法,但它拋出一個異常,當元素不發現,我怎麼能讓方法返回false而不是拋出異常,或者是否有更好的方法或布爾方法可以爲我做這項工作。

親切的問候

+0

我想你甚至都不需要了「其他」塊..只是捕獲異常,唐甚至不打印它...返回false – mlwn 2014-09-05 07:08:53

+1

您是否嘗試捕獲TimeoutException而不是NoSuchElementException? – 2014-09-05 07:09:11

+0

是的,你是正確的,我甚至不需要其他的代碼永遠不會得到其他參數,是的是我已經嘗試了timeoutException,問題是,如果我寫的條件永遠不會返回null,因爲它基本上拋出一個異常當找不到元素時。我想知道是否有更好的方法來實現該方法的目的。 – 2014-09-05 07:14:44

回答

2

宰憲李回答了這個問題

{ 
    wait.until(...); return true; 
    } 
catch(TimeoutException ex) 
    { return false; } //might work if the wait.until(...) throws a TimeoutException 

報告說,沒有

+2

你會想趕上WebDriverTimeoutException – KthProg 2016-11-22 15:50:31