java - Htmlunitdriver 与 Rest Assured API 冲突

标签 java maven selenium-webdriver rest-assured htmlunit-driver

我正在尝试使用 Htmlunitdriver,但它看起来与 Rest Assured API 冲突。

如果我从 pom.xml 中删除放心库,下面的代码可以正常工作 HtmlUnitDriver 驱动程序 = new HtmlUnitDriver();

如果我将 rest assured library 添加到 pom.xml,则会抛出如下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/cookie/CookieSpecProvider
at com.gargoylesoftware.htmlunit.WebClient.createWebConnection(WebClient.java:1907)
at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:134)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.newWebClient(HtmlUnitDriver.java:303)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.createWebClient(HtmlUnitDriver.java:277)
at org.openqa.selenium.htmlunit.HtmlUnitDriver.<init>(  HtmlUnitDriver.java:148)
at dfbhdfbhdfbh.htmlunittest.main(htmlunittest.java:15)
Caused by: java.lang.ClassNotFoundException: org.apache.http.cookie.CookieSpecProvider
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more

下面是依赖列表

<dependencies>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.8.1</version>
 </dependency>        
       <dependency>
    <groupId>com.jayway.restassured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>2.3.1</version>
 </dependency>              
 <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>2.48.2</version>
    <exclusions>
        <exclusion>
            <artifactId>commons-codec</artifactId>
            <groupId>commons-codec</groupId>
        </exclusion>
    </exclusions>
</dependency> 
<dependency>
   <groupId>org.seleniumhq.selenium</groupId>
   <artifactId>selenium-java</artifactId>
   <version>2.48.2</version>
</dependency>  
</dependencies>

不确定如何解决这个问题。 我尝试使用不同的 Selenium 版本 (2.24.1),它解决了异常。但这给我尝试访问的网页带来了问题。 另外,如果我创建一个 Java 项目并添加 selenium 和放心的 jars,我看不出有任何问题。

我相信与 Maven 依赖有关。

最佳答案

我找到了一个解决方案 - 将以下代码添加到 pom 文件解决了问题 -

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>
  </dependencyManagement>

基本上 Selenium HTML Unit 需要上述依赖项的更高版本,因此添加此代码将达到目的。

关于java - Htmlunitdriver 与 Rest Assured API 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34549929/

相关文章:

java - IntelliJ 想法 : Maven compilation warning about supported annotation processor source version 'RELEASE_6' on Java 11

maven - HSQL 单元测试——如何创建多个内存模式?

python - 使用 PhantomJS 运行 Selenium Webdriver 时出现 InvalidElementStateException

java - WebDriver - 使用 selenium 检查忘记密码功能

selenium - 在 selenium webdriver 中的浏览器上测试页面的缩放级别

java - 从多个数字 ID 创建唯一的数字 ID

java - 当参数化类型传递层次结构时,在 Java 中创建泛型类型的实例吗?

java - 以编程方式滚动 ExpandBar

javascript - 尝试在撤消链接上停止 AJAX

java - mvn test - 覆盖 application.properties 中的值