当前位置: 首页 > 面试题库 >

NoClassDefFoundError:Selenium中的org / apache / http / HttpEntity for ChromeDriver吗?

周意智
2023-03-14
问题内容

当我尝试从该网站访问数据时,我尝试使用Selenium自动化从网站中获取数据

run:
Starting ChromeDriver (v2.9.248315) on port 15621
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/entity/ContentType
    at org.openqa.selenium.remote.HttpCommandExecutor$EntityWithEncoding.<init>(HttpCommandExecutor.java:411)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:306)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:568)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
    at org.openqa.selenium.chrome.ChromeDriver.startSession(ChromeDriver.java:181)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:160)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:149)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:106)
    at pocmandi.PocMandi.main(PocMandi.java:32)
Caused by: java.lang.ClassNotFoundException: org.apache.http.entity.ContentType
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 12 more

这是我的鳕鱼

package pocmandi;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import java.util.StringTokenizer;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
import org.openqa.selenium.support.ui.Select;
import java.sql.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class PocMandi {

    Statement st = null;
    Connection cn = null;

    public static void main(String args[]) throws InterruptedException, ClassNotFoundException, SQLException {

        int j = 0;
        String htmlTableText = null;
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\SHAKTI\\Desktop\\JarFiles\\chromedriver_win32\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        String commodity = "Jo";
        String commo[] = {"Paddy", "Rice", "Jwar", "Barley", "Corn", "Wheat", "Jo", "Bejhar", "Jai", "Urad", "Moong", "Chana", "Matar"};
        for (String com : commo) {
            String sDate = "27/03/2014";
            String url = "http://www.upmandiparishad.in/commodityWiseAll.aspx";
            driver.get(url);
            Thread.sleep(5000);

            new Select(driver.findElement(By.id("ctl00_ContentPlaceHolder1_ddl_commodity"))).selectByVisibleText(com);
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_txt_rate")).sendKeys(sDate);

            Thread.sleep(3000);
            driver.findElement(By.id("ctl00_ContentPlaceHolder1_btn_show")).click();
            Thread.sleep(5000);

            WebElement findElement = driver.findElement(By.id("ctl00_ContentPlaceHolder1_GridView1"));
            // WebElement find=driver.findElement(By.id("ctl00_ContentPlaceHolder1_ddl_commodity"));
            htmlTableText = findElement.getText();
      //  String html=find.getText();
            // do whatever you want now, This is raw table values.
            htmlTableText = htmlTableText.replace("S.No.DistrictMarketPrice", "");
            htmlTableText = htmlTableText.replaceAll("\\s(\\d+\\s[A-Z])", "\n$1");
            htmlTableText = htmlTableText.replaceAll("(?=(.*?[ ]){4,}).*?[\n\r]", "");
            htmlTableText = htmlTableText.replace("S.No. District Market Price", "");
            System.out.println(htmlTableText);

            String s[] = htmlTableText.split("");
            StringTokenizer str = new StringTokenizer(htmlTableText);
            while (str.hasMoreTokens()) // for(int i=0;i<s.length;i++)
            // if(str.hasMoreElements())
            {
                String no = str.nextElement().toString();

                String city = str.nextElement().toString();
                String mandi = str.nextElement().toString();
                String price = str.nextElement().toString();
                Class.forName("com.mysql.jdbc.Driver");
                Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mandi", "root", "");
                //insert them into the database
                PreparedStatement ps = cn.prepareStatement("insert into commoditydemo values(?,?,?,?,?,?)");
                ps.setString(1, no);
                ps.setString(2, city);
                ps.setString(3, mandi);
                ps.setString(4, price);
                ps.setString(5, com);
                ps.setString(6, "0");
                j = ps.executeUpdate();
                cn.close();

            }
        }
        driver.close();
        driver.quit();
        if (j == 1) {
            System.out.println("data inserted");
        } else {
            System.out.println("not inserted");
        }
    }
}

如何获取我的输出并删除此异常?

提前致谢


问题答案:

为了检查您的代码,我尝试了以下操作:

@Test
public void test1() throws Exception {
    System.setProperty("webdriver.chrome.driver", "t:\\Others\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();

    String url = "http://www.upmandiparishad.in/commodityWiseAll.aspx";

    driver.get(url);
    Thread.sleep(5000);

    new Select(driver.findElement(By.id("ctl00_ContentPlaceHolder1_ddl_commodity"))).selectByVisibleText("Paddy");
    Thread.sleep(5000);

    driver.findElement(By.id("ctl00_ContentPlaceHolder1_txt_rate")).sendKeys("27/03/2014");
    Thread.sleep(5000);

    driver.findElement(By.id("ctl00_ContentPlaceHolder1_btn_show")).click();
    Thread.sleep(5000);

    driver.close();

}

它可以与FireFox(29.0)和Chrome(34.0)驱动程序正常工作。我使用了以下jar-s:

  • selenium-server-standalone-2.41.0.jar
  • selenium-java-2.41.0.jar
  • junit-dep-4.11.jar
  • hamcrest-core-1.3.jar

您应该检查项目的构建路径并添加适当的jar。但是,如果打开它,则可以在selenium-server-
standalone-2.XY.0.jar中找到丢失的类文件:selenium-server-standalone-2.41.0.jar \ org \
apache \ http \ entity \ ContentType

另一种方法是使用包含缺少的类文件的httpcore.jar(httpcore-4.3.jar)。



 类似资料:
  • 我做了一些谷歌搜索,我明白为什么我会得到错误,但我不确定如何修复它。从我所读到的内容来看,ContentType似乎试图利用Android附带的BasicHeaderValueParser,而该类还没有INSTANCE字段。有什么需要帮忙的吗? 以下是相关进口:

  • 我正在jmetm中执行负载测试。我的请求是并行运行4个API,所以我在jmetm中使用并行控制器,但在执行过程中,每次运行jmetm都会间歇性地收到以下两个响应 < li >“非HTTP响应代码:org . Apache . HTTP . nohttpresponse exception” < li >“响应代码:非HTTP响应代码:javax.net.ssl.SSLException响应消息:非

  • 我试图将html视图源代码编码为。从这个答案中得到了帮助,但首先我使用了但是看到了这个链接,它被移动到了 下面是我的代码: 此代码抛出以下错误: 问题1:它使用了apache通用文本包,但抛出了关于apache共用lang3的错误? 问题2:如何修复它? 有什么建议吗拜托 顺致敬意,

  • 我正在尝试编写一个程序来读取CSV文件,然后用它做一些东西。我找了很久,终于找到了这个图书馆。 几天前,我完成了代码,一切正常。今天我把库更新到4.0 v,然后弹出了很多警告。 我做了一些测试,失败的部分是: 这一个。 警告是: 这些。 我知道这是一个库问题,但我不知道是什么库导致了它,或者我是否需要更新或安装一些东西。 非常感谢你。

  • 我试图使用此库运行示例项目,但出现以下错误: 我添加了commons-lang-2.6。罐子 主要类别: 我提到了以下链接: > 爪哇。lang.ClassNotFoundException:org。阿帕奇。平民BaseClassLoader中的lang.StringUtils Struts 2框架演示 http://apache-commons.680414.n4.nabble.com/lang

  • 它运行得很顺利,但是,只要我向它发送POST,它就会生成“NoClassDefFoundError”