0

since webdrivers 115 version release, my projects started failing with this error: first error - not facing with it right now

So I have decided to update all dependencies in POM to have the most fresh packages there.. After resolving all dependencies conflicts(checked in Dependencies Analyzer in InteliJ), I am receiving this error message:

2023-08-30 10:49:09.122  INFO 2996 --- [           main] c.c.s.i.WebDriverThreadLocalContainer    : No webdriver is bound to current thread: 1 - let's create a new webdriver

2023-08-30 10:49:09.136  INFO 2996 --- [           main] com.codeborne.selenide.impl.FileHelper   : Creating folder: C:\Workspace\testautomation\build\downloads\1693388949135_2996_1

 

java.lang.NoSuchMethodError: 'void org.openqa.selenium.chrome.ChromeOptions.mergeInOptionsFromCaps(java.lang.String, org.openqa.selenium.Capabilities)'

 

    at org.openqa.selenium.chrome.ChromeOptions.merge(ChromeOptions.java:67)

    at org.openqa.selenium.chrome.ChromeOptions.merge(ChromeOptions.java:48)

    at com.codeborne.selenide.webdriver.AbstractDriverFactory.merge(AbstractDriverFactory.java:90)

    at com.codeborne.selenide.webdriver.AbstractDriverFactory.createCommonCapabilities(AbstractDriverFactory.java:82)

    at com.codeborne.selenide.webdriver.ChromeDriverFactory.createCapabilities(ChromeDriverFactory.java:48)

    at com.codeborne.selenide.webdriver.ChromeDriverFactory.create(ChromeDriverFactory.java:32)

    at com.codeborne.selenide.webdriver.WebDriverFactory.createWebDriverInstance(WebDriverFactory.java:120)

    at com.codeborne.selenide.webdriver.WebDriverFactory.createWebDriver(WebDriverFactory.java:67)

    at com.codeborne.selenide.drivercommands.CreateDriverCommand.lambda$createDriver$0(CreateDriverCommand.java:76)

    at com.codeborne.selenide.logevents.SelenideLogger.wrap(SelenideLogger.java:133)

    at com.codeborne.selenide.logevents.SelenideLogger.get(SelenideLogger.java:113)

    at com.codeborne.selenide.drivercommands.CreateDriverCommand.createDriver(CreateDriverCommand.java:52)

    at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.createDriver(WebDriverThreadLocalContainer.java:205)

    at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.createAndRegisterDriver(WebDriverThreadLocalContainer.java:190)

    at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.getAndCheckWebDriver(WebDriverThreadLocalContainer.java:152)

    at com.codeborne.selenide.WebDriverRunner.getAndCheckWebDriver(WebDriverRunner.java:130)

    at com.codeborne.selenide.impl.StaticDriver.getAndCheckWebDriver(StaticDriver.java:65)

    at com.codeborne.selenide.SelenideDriver.getAndCheckWebDriver(SelenideDriver.java:222)

    at com.codeborne.selenide.drivercommands.Navigator.lambda$navigateTo$0(Navigator.java:71)

    at com.codeborne.selenide.logevents.SelenideLogger.lambda$run$0(SelenideLogger.java:105)

    at com.codeborne.selenide.logevents.SelenideLogger.wrap(SelenideLogger.java:133)

    at com.codeborne.selenide.logevents.SelenideLogger.run(SelenideLogger.java:104)

    at com.codeborne.selenide.drivercommands.Navigator.navigateTo(Navigator.java:69)

    at com.codeborne.selenide.drivercommands.Navigator.open(Navigator.java:32)

    at com.codeborne.selenide.SelenideDriver.open(SelenideDriver.java:101)

    at com.codeborne.selenide.Selenide.open(Selenide.java:53)

    at testConfiguration.BaseTestConfiguration.prepareTestEnv(BaseTestConfiguration.java:50)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.base/java.lang.reflect.Method.invoke(Method.java:564)

    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)

    at org.testng.internal.invokers.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:69)

    at org.testng.internal.invokers.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:390)

    at org.testng.internal.invokers.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:325)

    at org.testng.internal.invokers.TestInvoker.runConfigMethods(TestInvoker.java:810)

    at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:577)

    at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227)

    at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)

    at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957)

    at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200)

    at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)

    at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)

    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

    at org.testng.TestRunner.privateRun(TestRunner.java:848)

    at org.testng.TestRunner.run(TestRunner.java:621)

    at org.testng.SuiteRunner.runTest(SuiteRunner.java:443)

    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:437)

    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:397)

    at org.testng.SuiteRunner.run(SuiteRunner.java:336)

    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)

    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)

    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1280)

    at org.testng.TestNG.runSuitesLocally(TestNG.java:1200)

    at org.testng.TestNG.runSuites(TestNG.java:1114)

    at org.testng.TestNG.run(TestNG.java:1082)

    at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)

    at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)

 

I think that, this is possible caused by some exclusions in POM or I haven't set properly ChromeOptions.. Before, I have use only ChromeOptions for such configurations:

@BeforeMethod
public void prepareTestEnv() {
    **open**(conf.getUrl() + "env.com");
}

@AfterMethod
public void close() {
    closeWebDriver();
}

private void prepareBrowser() {
    Configuration.browser = "chrome";
    Configuration.browser = browserConf.getBrowser();
    Configuration.browserSize = browserConf.getSize();
    Configuration.pageLoadTimeout = 10000;
    Configuration.timeout = 30000;
    Configuration.pollingInterval = 500;
}

and to precise issue: error message is pointing on Selenide.open method..

here you have POM(with anonymized client data):

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <parent>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.14</version>
        <!-- lookup parent from repository -->
    </parent>
    <groupId>XXX</groupId>
    <artifactId>XXX</artifactId>
    <version>1.0-SNAPSHOT</version>
    <description>XXX</description>

    <properties>
        <java.version>14</java.version>
        <aspectj.version>1.9.20</aspectj.version>
    </properties>

    <distributionManagement>
        <repository>
            <id>XXX</id>
            <url>XXX</url>
        </repository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>XXX</id>
            <url>XXX</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>XXX</id>
            <url>XXX</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

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

        <dependency>
            <groupId>org.apache.httpcomponents.core5</groupId>
            <artifactId>httpcore5</artifactId>
            <version>5.2.2</version>
        </dependency>

        <dependency>
            <groupId>com.github.javafaker</groupId>
            <artifactId>javafaker</artifactId>
            <version>1.0.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.1.2-jre</version>
        </dependency>

        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>6.17.2</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-simple</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-compress</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.httpcomponents.core5</groupId>
                    <artifactId>httpcore5</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-compress</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-java</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.11.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-chrome-driver</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>4.11.0</version>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-api</artifactId>
            <version>4.11.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>5.3.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.codehaus.groovy</groupId>
                    <artifactId>groovy-xml</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.6.2</version>
        </dependency>

        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-selenide</artifactId>
            <version>2.24.0</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-testng</artifactId>
            <version>2.24.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.github.automatedowl</groupId>
            <artifactId>allure-environment-writer</artifactId>
            <version>1.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>io.qameta.allure</groupId>
                    <artifactId>allure-testng</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.testng</groupId>
                    <artifactId>testng</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.13.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.13.0</version>
        </dependency>
    </dependencies>

    <build>
        <defaultGoal>test</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <argLine>
                        --illegal-access=permit
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                    <suiteXmlFiles>
                        <!--suppress UnresolvedMavenProperty -->
                        <suiteXmlFile>src/test/resources/testNgSuites/${testSuite}.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <systemPropertyVariables>
                        <defaultBrowser>chrome</defaultBrowser>
                        <defaultTestEnvironment>ST</defaultTestEnvironment>
                    </systemPropertyVariables>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>1.9.20</version>
                    </dependency>
                    <dependency>
                        <groupId>org.apache.maven.surefire</groupId>
                        <artifactId>surefire-testng</artifactId>
                        <version>3.1.2</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <configuration>
                            <systemPropertyVariables>
                                <key>browser</key>
                                <value>${browser}</value>
                                <key>env</key>
                                <value>${environment}</value>
                            </systemPropertyVariables>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>14</release>
                    <source>14</source>
                    <target>14</target>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>1.18.22</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

PLEASE HELP :)

I think, that I have tried everything :)

jahu86
  • 1
  • 1

2 Answers2

0

Solution from @Indrapal Singh helped, thanks

removing all selenium dependencies, except:

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>4.11.0</version>
</dependency>
jahu86
  • 1
  • 1
  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Sep 01 '23 at 05:24
0

The problem here was different selenium dependencies contained duplicate classes and needed to use exclusion to overcome them. The better solution is to remove all selenium dependencies and keep selenium-java only.

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>4.11.0</version>
</dependency>
Indrapal Singh
  • 364
  • 1
  • 2
  • 13