NoClassDefFoundError: org/apache/http/HttpEntity in Selen für ChromeDriver?
ich bin versucht zu Holen von Daten von einer website mit Selen automation, wenn ich versuche, Zugriff auf Daten aus dieser web-site, erhalte ich die folgende Ausnahme
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
Hier ist mein cod
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");
}
}
}
Wie kann ich meine Ausgabe und entfernen Sie diese Ausnahme?
Vielen Dank im Voraus
- Sie fehlen einige Gläser auf den classpath, überprüfen Sie die CP-Einstellungen
- Hinzugefügt habe ich Folgende jar
- Also scheitert es nur mit Chrome Treiber?
- schlägt es mit chrome und frifox
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie Ihren code, ich habe versucht, die folgenden:
}
Funktioniert es einwandfrei mit FireFox (29.0) - und Chrom (34.0) Treiber. Ich verwendet die folgenden jar-s:
Sollten Sie überprüfen Sie Ihren Projekt build path und fügen Sie die entsprechende jar-en. Aber Sie können die fehlende Klasse in der Datei selenium-server-standalone-2.XY.0.jar wenn Sie es öffnen: selenium-server-standalone-2.41.0.jar\org\apache\http\entity\ContentType
Andere Möglichkeit ist die Verwendung httpcore.jar (httpcore-4.3.jar), enthält die fehlenden class-Datei.
Dies ist eigentlich, weil Sie mit der alten version des selenium-java-binding, denke ich, geringer als 2.40.0 da dieser Selen-version fehlt org/apache/http/Person/ContentType
(selbst intern)
so gibt es zwei Lösungen.
Option 1 - Sie wollen zu halten, Selen 2.40.0 oder niedriger
Wenn Sie möchten, halten die alten Selen 2.40.0 oder niedriger, dann Sie haben fehlende jar zu deinem Projekt, selbst, wenn Sie mit maven unten ist die Abhängigkeit.
link zum download der hhtpcore 4.3 jar
Option 2 - Sie können Sie aktualisieren die alte Selen 2.40.0 oder weniger zu 2.53.0 oder aktuelle 3.4.0
Bitte aktualisieren Sie auf eine neue Selen-version wie Selen 2.53.0 oder spätestens Selen 3.4.0
link für die Selen-Glas 2.53.0