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

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

提问人:jahu86 提问时间:8/30/2023 最后编辑:jahu86 更新时间:8/31/2023 访问量:84

问:

自 Webdrivers 115 版本发布以来,我的项目开始失败并出现以下错误:第一个错误 - 现在没有面对它

因此,我决定更新POM中的所有依赖项,以便在那里获得最新鲜的包。 解决所有依赖关系冲突(在InteliJ的依赖关系分析器中检查)后,我收到以下错误消息:

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)

 

我认为,这可能是由于 POM 中的某些排除项或我没有正确设置 ChromeOptions。 以前,我只使用 ChromeOptions 进行此类配置:

@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;
}

并精确地解决:错误消息指向Selenide.open方法。

这里你有POM(带有匿名的客户数据):

<?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>

请帮忙:)

我想,我已经尝试了一切:)

爪哇岛 弹簧启动 硒化物 Chrome选项

评论

0赞 Indrapal Singh 8/30/2023
删除 pom 中的所有 selenium 依赖项,只保留一个。<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.11.0</version> </dependency>
0赞 Indrapal Singh 8/31/2023
请对我的回答投赞成票,因为这解决了您的问题。
0赞 jahu86 9/1/2023
@IndrapalSingh没有足够的声誉:(将来会做:)

答:

0赞 jahu86 8/31/2023 #1

@Indrapal Singh 的解决方案有所帮助,谢谢

删除所有 selenium 依赖项,但以下情况除外:

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

评论

0赞 Community 9/1/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Indrapal Singh 8/31/2023 #2

这里的问题是不同的 selenium 依赖项包含重复的类,需要使用排除来克服它们。更好的解决方案是删除所有 selenium 依赖项并仅保留 selenium-java。

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