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 >