groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: Groovy code with Function or Predicate
Date Mon, 11 Dec 2017 11:09:32 GMT
that or:

wait.until(application as Function)

Cheers, Paul.

On Mon, Dec 11, 2017 at 8:46 PM, Mohan Radhakrishnan <
radhakrishnan.mohan@gmail.com> wrote:

> I posted this too soon.
>
> This line
>
> Function<WebDriver, Boolean> application =  {  wd ->
> wd.findElement(By.name("q"))}
>
> removes that error. Hope this is the right way.
>
> Thanks,
> Mohan
>
> On 11 December 2017 at 15:06, Mohan Radhakrishnan <
> radhakrishnan.mohan@gmail.com> wrote:
>
>> Hi,
>>
>> When I try to pass a lambda to a Selenium API call I see this error.
>> Believe this version of Selenium uses Guava lambdas.
>>
>> I understand that I need to be explicit and specify whether it is a
>> Function or a Predicate. But don't know how to do this with groovy.
>>
>> So here I may have to explicitly declare a Function with an 'apply'
>> method.
>>
>> Cannot resolve which method to invoke for [class Fluent$_closure1] due to
>> overlapping prototypes between:
>> [interface com.google.common.base.Function]
>> [interface com.google.common.base.Predicate]
>>
>>
>>                          ieDriver = new ChromeDriver();
>>
>>    class Fluent{
>>
>>      ChromeDriver ieDriver;
>>      def application =  {  wd -> wd.findElement(By.name("q"))}
>>
>>      Fluent( ChromeDriver ieDriver){
>>       this.ieDriver = ieDriver;
>>
>>      }
>>
>>      public WebElement waitFluently(){
>>
>>            Wait wait = new FluentWait( ieDriver)
>>                   .withTimeout(10, SECONDS )
>>                   .pollingEvery(5, SECONDS)
>>   .ignoring(NoSuchElementException.class);
>> WebElement foo = wait.until(application);
>>
>>     }
>>                           }
>>                            try{
>>                                   ieDriver.get("http://www.google.com");
>>                                   WebElement element = new
>> Fluent(ieDriver).waitFluently(); //driver.findElement(By.name("q"));
>>                            }catch(Exception e) {
>>                                   log.info(" Exception " +
>> e.getMessage());
>>                            }finally{
>>                                   ieDriver.quit();
>>                            }
>>
>>
>> Thanks,
>> Mohan
>>
>
>

Mime
View raw message