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 <[email protected]> wrote:
> What does printing out `nse` in both cases show?
>
> On Mon, Jan 8, 2018 at 11:02 PM, Mohan Radhakrishnan <
> [email protected]> 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
>>
>
>