【问题标题】:Selenide Test fails with org/openqa/selenium/NoSuchSessionExceptionSelenide 测试因 org/openqa/selenium/NoSuchSessionException 而失败
【发布时间】:2020-07-09 19:53:20
【问题描述】:

我正在尝试在 mvn 项目中使用 Selenide 和 testng 编写一个 selenium E2E 测试用例。这是我的第一个基本测试用例,我尝试打开一个链接。但是,当我使用 Idea intellij 运行测试时,我看到以下错误:

TestNG] Running:
/Users/Prajakta_Mahamuni/Library/Caches/IntelliJIdea2019.2/temp-testng-customsuite.xml
java.lang.NoClassDefFoundError: org/openqa/selenium/NoSuchSessionException
at com.codeborne.selenide.impl.WebDriverThreadLocalContainer.<init>(WebDriverThreadLocalContainer.java:39)

这是我的测试用例:

package com.symantec.epmp.scsem.web.management.controllers;

import org.testng.annotations.Test;
import static com.codeborne.selenide.Selenide.*;

public class ConsoleITTest {

    @Test
    public void mdrLogin() {

        open("https://www.google.com");

    }

}

还有 pom.xml:

<dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>3.141.59</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>xerces</groupId>
                        <artifactId>xercesImpl</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-api</artifactId>
                <version>2.42.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.webdriver</groupId>
                <artifactId>webdriver-selenium</artifactId>
                <version>0.9.7376</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.assertj</groupId>
                <artifactId>assertj-core</artifactId>
                <version>2.0.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-chrome-driver</artifactId>
                <version>2.42.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-firefox-driver</artifactId>
                <version>2.42.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-ie-driver</artifactId>
                <version>2.42.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-safari-driver</artifactId>
                <version>2.42.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.codeborne</groupId>
                <artifactId>selenide</artifactId>
                <version>5.10.0</version>
                <scope>test</scope>
            </dependency>

我看到这个错误的原因是依赖于 selenium-java,但是它存在于项目中。测试无法运行的原因可能是什么。

【问题讨论】:

    标签: java selenium intellij-idea testng selenide


    【解决方案1】:

    我认为这是由于 selenium-api。它仍然指向旧版本 2.42.0。还要检查您的其他驱动程序,如果您遇到同样的问题,请根据您喜欢执行的浏览器更新它们

    请参考下面我正在使用的 POm 文件,它对我来说工作正常。

    <properties>
            <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <selenium.hub.url>http://local.example.com:4444/wd/hub</selenium.hub.url>
        <browser>firefox</browser>
        <holdBrowserOpen>false</holdBrowserOpen>
        <webdriver.gecko.driver>${user.home}/bin/geckodriver</webdriver.gecko.driver>
        <webdriver.chrome.driver>${user.home}/bin/chromedriver</webdriver.chrome.driver>
        <surefire.argLine></surefire.argLine>
        <selenium.version>3.0.1</selenium.version>
        <selenide.version>4.0</selenide.version>
    </properties>
    
    <prerequisites>
        <maven>3.3</maven>
    </prerequisites>
    
    <profiles>
        <profile>
            <id>firefox</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <browser>firefox</browser>
            </properties>
        </profile>
        <profile>
            <id>chrome</id>
            <properties>
                <browser>chrome</browser>
            </properties>
        </profile>
        <profile>
            <id>phantomjs</id>
            <properties>
                <browser>phantomjs</browser>
            </properties>
        </profile>
        <profile>
            <id>ie</id>
            <properties>
                <browser>ie</browser>
            </properties>
        </profile>
        <profile>
            <id>safari</id>
            <properties>
                <browser>safari</browser>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-safari-driver</artifactId>
                    <version>${selenium.version}</version>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>htmlunit</id>
            <properties>
                <browser>htmlunit</browser>
            </properties>
            <dependencies>
                <dependency>
                    <groupId>org.seleniumhq.selenium</groupId>
                    <artifactId>selenium-htmlunit-driver</artifactId>
                    <version>LATEST</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <id>ci-server</id>
            <properties>
                <surefire.argLine>-Dremote=${selenium.hub.url}</surefire.argLine>
            </properties>
        </profile>
        <profile>
            <id>local</id>
            <properties>
                <holdBrowserOpen>true</holdBrowserOpen>
            </properties>
        </profile>
    </profiles>
    
    <build>
        <defaultGoal>clean test</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <detail>true</detail>
                    <forkCount>1C</forkCount>
                    <reuseForks>true</reuseForks>
                    <systemPropertyVariables>
                        <browser>${browser}</browser>
                        <holdBrowserOpen>${holdBrowserOpen}</holdBrowserOpen>
                        <webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>
                        <webdriver.gecko.driver>${webdriver.gecko.driver}</webdriver.gecko.driver>
                    </systemPropertyVariables>
                    <argLine>${surefire.argLine}</argLine>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.13</version>
        </dependency>
        <dependency>
            <groupId>com.codeborne</groupId>
            <artifactId>selenide</artifactId>
            <version>${selenide.version}</version>
        </dependency>
    
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>${selenium.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    【讨论】:

    • 您的建议有助于解决问题。谢谢 !我将所有版本都更新到了最新版本,并且可以正常工作。
    猜你喜欢
    • 2017-12-21
    • 2017-05-04
    • 2019-07-03
    • 2016-08-10
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2021-12-12
    相关资源
    最近更新 更多