2017-02-09 7 views
0

Почему dosnt мой метод поймал мой «Исключение времени ожидания» и распечатал консоль?Почему dosnt мой метод улавливает «Исключение времени ожидания» и печатает на консоль?

public void clickDrivingExperienceButton() throws Exception { 
    boolean test = this.wait.until(ExpectedConditions.elementToBeClickable(link_DrivingExperiences)).isEnabled(); 
    try { 
     if (test == true) { 
      link_DrivingExperiences.click(); 
     } 
     System.out.println("Successfully clicked on the driving experience button, using locator: " + "<" + link_DrivingExperiences.toString() + ">"); 
    }catch (TimeoutException e) { 
     System.out.println("WHY DONT I PRINT ANYTHING??????" + e.getMessage()); 
    }catch (Exception e) { 
     System.out.println("Unable to click on the Driving Experience Button, Exception: " + e.getMessage()); 
    } finally { 
     // final code here 
    } 
} 

enter image description here

ответ

0

Скорее всего исключение тайм-аут выбрасывает из this.wait.until(ExpectedConditions.elementToBeClickable(link_DrivingExperiences)).isEnabled();, и ваша попытка прилов блок не заключите эту строку

+0

, если вы отправляете полную трассировку стека, будет яснее, на котором возникает исключение строки –

0

Положите this.wait.until внутри блока Try.

Сообщение об исключении уже сообщает, что исключение произошло, когда он ожидал, что элемент будет доступен для кликабеля.

public void clickDrivingExperienceButton() throws Exception { 

    try { 
boolean test = this.wait.until(ExpectedConditions.elementToBeClickable(link_DrivingExperiences)).isEnabled(); 
     if (test == true) { 
      link_DrivingExperiences.click(); 
     } 
     System.out.println("Successfully clicked on the driving experience button, using locator: " + "<" + link_DrivingExperiences.toString() + ">"); 
    }catch (TimeoutException e) { 
     System.out.println("WHY DONT I PRINT ANYTHING??????" + e.getMessage()); 
    }catch (Exception e) { 
     System.out.println("Unable to click on the Driving Experience Button, Exception: " + e.getMessage()); 
    } finally { 
     // final code here 
    } 
} 
+0

, если я сделаю это по какой-то причине, установленное время позволяет сказать, что 10 секунд не работает – Gbru

+0

Перекрестите свой код. Ввод инструкции внутри try не должен вызывать никаких проблем. Теперь исключение будет выловлено и распечатано. –

0

Ваш try-catch не поймать исключение, потому что исключение происходит от 2-й линии (wait.until), и это не внутри try-catch.

У вас есть те же проблемы, что и в вашем другом вопросе, https://stackoverflow.com/a/42120129/2386774, что я бы посоветовал вам также исправить этот код.


Это должно быть в основном ниже

public void clickDrivingExperienceButton() throws Exception 
{ 
    this.wait.until(ExpectedConditions.elementToBeClickable(link_DrivingExperiences)).click(); 
} 

Вы не должны действительно необходимо войти столько, сколько вы регистрируетесь. Если элемент успешно нажат, скрипт будет прогрессировать. Регистрация, которая только собирается засорить ваши журналы, ИМО. Также нет смысла регистрировать исключение, потому что оно все равно будет сбрасываться в журналы. Как правило, вы хотите, чтобы ваш скрипт останавливался, когда генерируется исключение, если на него не повлияет действие. Это во многом зависит от вашего сценария, поэтому вам придется принять окончательное решение о том, следует ли продолжать или нет, что будет определять, как вы обрабатываете заброшенные исключения.

+0

еще раз спасибо в следующем методе, который вы указали, как бы изменить метод, позволяя ему действовать, даже если щелчок на методе не увенчался успехом? – Gbru

+0

Бросьте 'try-catch' вокруг' wait.until() 'и поймите' TimeoutException'. – JeffC