In the second case it is this.

org.openqa.selenium.NoSuchElementException

In the first case this seems to escape out.

So I changed my first clause to this.

}catch( NoSuchElementException nse ){
    print "Catch clause " + nse
}catch( Exception e ){
    print "Catch clause " + e
}

It prints org.openqa.selenium.NoSuchElementException if I catch 'Exception'.

Does this have anything to do with the 'closure' shown in this trace ?

at
com.automation.pages.PageObjectLayer$_waitUntil_closure2.doCall(PageObjectLayer.groovy:39)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208) at
com.automation.pages.PageObjectLayer.waitUntil(PageObjectLayer.groovy:39)
at
com.automation.page.test.WidgetTest.waitUntilNoSuchWidgetExceptionWithMessage(WidgetTest.groovy:54)

Thanks.

On 8 January 2018 at 19:28, Paul King <pa...@asert.com.au> wrote:

> What does printing out `nse` in both cases show?
>
> On Mon, Jan 8, 2018 at 11:02 PM, Mohan Radhakrishnan <
> radhakrishnan.mo...@gmail.com> wrote:
>
>> Hello,
>>
>> These catch clauses are somehow different from each other. Why  ?
>>
>> In the first case 'NoSuchElementException' is somehow escaping the
>> 'catch' block. My test fails.
>>
>> But the second clause succeeds as expected.
>>
>> Clause 1 :
>>
>> catch( NoSuchElementException nse ){
>>
>>     throw new NoSuchWidgetException( " Element " + by.toString() + " not 
>> found" +
>>                                      " after polling for [" + 
>> pollingInterval.longValue() +
>>                                      "] with timeout set to [" + 
>> timeOut.longValue() );
>> }
>>
>>
>> Clause 2 :
>>
>> try{
>>     WaitForWidget<Widget> wait =
>>     new WaitForWidget<WebDriver>(wd).
>>                             pollingEvery(pollingInterval.longValue(),unit).
>>                             withTimeout(timeOut.longValue(),unit).
>>                             withMessage(supplierClosure)
>>
>>     wait.until( {  wd.findElement( by )} as Function )
>> }catch(  nse ){
>>     throw new NoSuchWidgetException( " Element " + by.toString() + " not 
>> found" +
>>                                      " after polling for [" + 
>> pollingInterval.longValue() +
>>                                      "] with timeout set to [" + 
>> timeOut.longValue() );
>> }
>>
>> Thanks,
>> Mohan
>>
>
>

Reply via email to