1

I am new to selenium automation, I have started automating few screens of my application by integrating selenium in the application itself.

I have added following dependences

<dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>3.4.0</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.11</version>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>2.29.1</version>
        </dependency>

and return the code to login and click a menu button using chromedriver as bellow

      class LoginTest{

        // defined a WebDriver named driver

        private WebDriver driver;

        @Test
            public void loginTest()
                    throws InterruptedException
            {
                // open login page
                driver.get("https://localhost:8080/adct/#/");
                // maximize the window
                driver.manage().window().maximize();
                // type in user name
                driver.findElement(By.id("username")).sendKeys("abcd");
                // type in user password
                driver.findElement(By.id("password")).sendKeys("abcd");
                // click on the submit button
                driver.findElement(By.id("loginBtn")).click();

                try
                {
                    WebDriverWait wait = new WebDriverWait(driver, 15);
                    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='menuBtnId']")));
                    element.click();
                    Thread.sleep(3000);

                    ImportTestCase testCase = new ImportTestCase();
                    testCase.setFileName("Login Success");
                    testcases.add(testCase);

                }
                catch(Exception e)
                {
                    ImportTestCase testCase = new ImportTestCase();
                    testCase.setFileName("Login Failure");
                    testcases.add(testCase);
                }
        }

        }

But while building the application using mvn clean install I am geeting following exception

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project BillWebApplication: Compilation failure
[ERROR] /home/user/SVN/Source/BillWebApplication/src/main/java/com/billing/dct/automation/service/LoginTest.java:[25,32] error: cannot access Function
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project BillWebApplication: Compilation failure
/home/user/SVN/Source/BillWebApplication/src/main/java/com/billing/dct/automation/service/LoginTest.java:[25,32] error: cannot access Function

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
/home/user/SVN/Source/BillWebApplication/src/main/java/com/billing/dct/automation/service/LoginTest.java:[25,32] error: cannot access Function

    at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)
    at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:133)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

I have gone through the link but still it did not solved the problem and what ever I try the exception is pointing to the following peace of line.

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='menuBtnId']")));

is there any alternative for the above line or is there any solution to fix it. Any help will be appreciated.

Rajesh Hatwar
  • 1,843
  • 6
  • 39
  • 58

2 Answers2

1

I have solved by adding following dependency into pom.xml with out any code change

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>3.0.1</version>
        </dependency>
Rajesh Hatwar
  • 1,843
  • 6
  • 39
  • 58
0

In my case issue was related to Java version. You cannot use wait.until(ExpectedConditions.visibilityOfElementLocated() before Java 8. As it indirectly inherits Function interface

gokareless
  • 1,165
  • 1
  • 10
  • 26