Sébastien Temprado
Sébastien Temprado

Reputation: 1463

Dependency error with Selenium 3.3.1 and FirefoxDriver

I use geckodriver v0.15.0 (Latest release) and Firefox 52.0.1 (64 bits)

Here is my code :

public static void main(String[] args) {
    WebDriver driver = new FirefoxDriver();
    driver.get("http://www.google.com");
    System.out.println("Page title is: " + driver.getTitle());
    driver.quit();
}

Here is the dependencies for Selenium in my pom (latest version of Selenium) :

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>3.3.1</version>
    <scope>test</scope>
</dependency>  
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-support</artifactId>
    <version>3.3.1</version>
    <scope>test</scope>
</dependency> 

And the exception at runtime :

Exception in thread "main" java.lang.NoSuchMethodError: org.openqa.selenium.net.PortProber.waitForPortUp(IILjava/util/concurrent/TimeUnit;)V
at org.openqa.selenium.firefox.GeckoDriverService.waitUntilAvailable(GeckoDriverService.java:73)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:166)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:644)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:218)

If I add this dependency :

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-remote-driver</artifactId>
    <version>3.3.1</version>
</dependency> 

I have got another exception :

Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/interactions/Interactive

What dependency is missing? Thank you.

UPDATE

mvn dependency:tree with htmlunit-driver 2.25, selenium-remote-driver 3.3.1, selenium-firefox-driver 3.3.1, selenium-support 3.3.1

[INFO] +- org.seleniumhq.selenium:htmlunit-driver:jar:2.25:compile
[INFO] |  +- org.seleniumhq.selenium:selenium-api:jar:2.53.1:compile
[INFO] |  \- net.sourceforge.htmlunit:htmlunit:jar:2.21:compile
[INFO] |     +- xalan:xalan:jar:2.7.2:compile
[INFO] |     |  \- xalan:serializer:jar:2.7.2:compile
[INFO] |     +- org.apache.commons:commons-lang3:jar:3.4:compile
[INFO] |     +- org.apache.httpcomponents:httpmime:jar:4.5.2:compile
[INFO] |     +- net.sourceforge.htmlunit:htmlunit-core-js:jar:2.17:compile
[INFO] |     +- net.sourceforge.htmlunit:neko-htmlunit:jar:2.21:compile
[INFO] |     |  \- xerces:xercesImpl:jar:2.11.0:compile
[INFO] |     |     \- xml-apis:xml-apis:jar:1.4.01:compile
[INFO] |     +- net.sourceforge.cssparser:cssparser:jar:0.9.18:compile
[INFO] |     |  \- org.w3c.css:sac:jar:1.3:compile
[INFO] |     +- commons-io:commons-io:jar:2.4:compile
[INFO] |     \- org.eclipse.jetty.websocket:websocket-client:jar:9.4.1.v20170120:compile
[INFO] |        +- org.eclipse.jetty:jetty-util:jar:9.4.1.v20170120:compile
[INFO] |        +- org.eclipse.jetty:jetty-io:jar:9.4.1.v20170120:compile
[INFO] |        +- org.eclipse.jetty:jetty-client:jar:9.4.1.v20170120:compile
[INFO] |        |  \- org.eclipse.jetty:jetty-http:jar:9.4.1.v20170120:compile
[INFO] |        \- org.eclipse.jetty.websocket:websocket-common:jar:9.4.1.v20170120:compile
[INFO] |           \- org.eclipse.jetty.websocket:websocket-api:jar:9.4.1.v20170120:compile
[INFO] +- org.seleniumhq.selenium:selenium-remote-driver:jar:3.3.1:compile
[INFO] |  +- cglib:cglib-nodep:jar:3.2.4:compile
[INFO] |  +- org.apache.commons:commons-exec:jar:1.3:compile
[INFO] |  \- net.java.dev.jna:jna-platform:jar:4.1.0:compile
[INFO] |     \- net.java.dev.jna:jna:jar:4.2.2:compile
[INFO] +- org.seleniumhq.selenium:selenium-firefox-driver:jar:3.3.1:compile
[INFO] \- org.seleniumhq.selenium:selenium-support:jar:3.3.1:compile

Update 2

OS: Linux 64 bits

Upvotes: 1

Views: 12071

Answers (5)

Mohd Yusuf
Mohd Yusuf

Reputation: 21

  1. Update the selenium version
  2. Download the geckodriver and set system path eg "F:\geckodriver-v0.20.1-win64"
  3. Add following code snippet to your existing code DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true);

Now run the script and it will work for you, hope this helps.

Upvotes: 0

Anuj Teotia
Anuj Teotia

Reputation: 1323

Add System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"\\geckodriver.exe"); to your code.

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class CheckFireFox {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com");
        System.out.println("Page title is: " + driver.getTitle());
        driver.quit();
    }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>StackOverFlow</groupId>
    <artifactId>StackOverFlow</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.3.1</version>
        </dependency>
    </dependencies>
</project>

Console output :

Mar 27, 2017 2:39:01 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Page title is: Google

Upvotes: 0

S&#233;bastien Temprado
S&#233;bastien Temprado

Reputation: 1463

Here is the required dependencies (I cleaned the .m2 directory too) :

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.3</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.6</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-remote-driver</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-api</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-firefox-driver</artifactId>
    <version>3.3.1</version>
</dependency>

Upvotes: 3

Ron Badur
Ron Badur

Reputation: 1973

Maybe you have jar versions conflict error. When I had that bug in my application, I found that it was referring the old Selenium jar. To resolve this, I removed the old jar's and rebuild the project with Selenium 3 jars.

Ensure that you have right libraries added to your project.

the command mvn dependency:tree can help you with this.

Note: when you use the test scope it's mean the the dependency is only available for the test compilation and execution phases, So you must put your code in a Test method or remove the scope tag

Hope this helps.

Upvotes: 1

Japu_D_Cret
Japu_D_Cret

Reputation: 638

check if you have the selenium-java dependency of the same version as your other dependencies

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.3.1</version>
</dependency>

Upvotes: 0

Related Questions