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.mo...@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
>

Reply via email to