On 9 January 2018 at 13:26, Mohan Radhakrishnan <radhakrishnan.mo...@gmail.com> wrote: > I don't see java.util.NoSuchElementException anywhere.
>From the line: }catch( NoSuchElementException nse ){ we don't know which `NoSuchElementException` you're trying to catch (see what is imported), but we do know that the thrown exception is `org.openqa.selenium.NoSuchElementException`. The conclusion is: a) the `NoSuchElementException` in the catch clause shown above is not `org.openqa.selenium.NoSuchElementException`, or b) as Felix noted, different class loaders are being used cheers, Dinko > > > Mohan > > On 9 January 2018 at 15:05, Felix Dorner <felix.dor...@gmail.com> wrote: >> >> Or the same exception class but different classloader? Either of these >> two. >> >> On Jan 9, 2018 10:01, "Dinko Srkoč" <dinko.sr...@gmail.com> wrote: >>> >>> Is your `NoSuchElementException` in the catch clause by any chance >>> `java.util.NoSuchElementException`? >>> >>> cheers, >>> Dinko >>> >>> On 8 January 2018 at 16:18, Mohan Radhakrishnan >>> <radhakrishnan.mo...@gmail.com> wrote: >>> > 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 >>> >> >>> >> >>> > > >