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 <
[email protected]> 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
>