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

当我尝试从该网站访问数据时,我正试图从使用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.(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.(RemoteWebDriver.java:126) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:139) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:160) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:149) at org.openqa.selenium.chrome.ChromeDriver.(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[AZ])", "\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"); } } } 

如何获取输出并删除此exception?

提前致谢

要检查您的代码,我尝试了以下方法:

 @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的服务器独立,2.41.0.jar
  • selenium-Java的2.41.0.jar
  • JUnit的-DEP-4.11.jar
  • hamcrest核-1.3.jar

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

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

这实际上是因为你使用旧版本的selenium java绑定,我想低于2.40.0,因为这个selenium版本缺少org / apache / http / entity / ContentType(本身内部)

所以有两种解决方案。

选项1-您希望保持selenium2.40.0或更低

如果您希望保留旧的selenium 2.40.0或更低,那么您必须自己将缺少的jar添加到项目中,如果您使用下面的maven是依赖项。

  org.apache.httpcomponents httpcore 4.3  or 

链接下载hhtpcore 4.3 jar

选项2-您可以将旧的selenium 2.40.0或更低版本更新为2.53.0或最新的3.4.0

请更新到新的selenium版本,如selenium 2.53.0或最新的Selenium 3.4.0

  org.seleniumhq.selenium selenium-java 2.53.0  

链接为selenium jar 2.53.0

  **or**  org.seleniumhq.selenium selenium-java 3.4.0