ClassCastException: Java.lang.String ne peut pas être converti en Ljava.lang.String
Je reçois cette erreur->
Java.lang.ClassCastException: Java.lang.String cannot be cast to [Ljava.lang.String;
Du code collé ci-dessous.
public class LoginAttemps extends Setup {
public void testSearchCountry() throws Exception {
driver.get("http://www.wikipedia.org/wiki/Main_Page");
ReadExcelDemo readXls = new ReadExcelDemo();
List dataList = readXls.getData();
for (int i = 1; i < dataList.size(); i++) {
String[] testCase = new String[5];
String[] test = (String[]) dataList.get(i);
String countryName = test[0];
String countryDesc = test[1];
driver.findElement(By.id("searchInput")).clear();
driver.findElement(By.id("searchInput")).sendKeys(countryName);
driver.findElement(By.id("searchButton")).click();
String str = driver.findElement(
By.xpath("//h1[@id='firstHeading']/span")).getText();
System.out.println(countryDesc);
Assert.assertTrue(str.contains(countryName));
}
}
}
Je pense que le problème est avec String[] test = (String[]) dataList.get(i);
Mais je ne suis pas sûr de résoudre cette exception. Des indices?
Vous ne pouvez pas lancer "String" dans "Tableau de chaînes".
Vous pouvez uniquement placer une chaîne dans un emplacement dans un tableau.
Ce que vous pouvez faire c'est:
String theString = "whatever";
String[] myStrings = { theString };
En regardant le code, je pense que vous essayez de convertir List en un tableau , votre "ligne de problème" devrait donc être la suivante:
String[] test = (String[]) dataList.toArray(new String[dataList.size]);
merci les gars. Oui, j'essaie de convertir une liste d'objets en tableaux de chaînes. J'ai trouvé les problèmes. Code corrigé.
public void testSearchCountry() throws Exception {
driver.get("http://www.wikipedia.org/wiki/Main_Page");
ReadExcelDemo readXls = new ReadExcelDemo();
List dataList = readXls.getData();
String[] test = new String[dataList.size()];
for (int i = 1; i < dataList.size(); i++) {
String[] testCase = new String[5];
test[i] = dataList.get(i).toString();
String countryName = test[0];
String countryDesc = test[1];
driver.findElement(By.id("searchInput")).clear();
driver.findElement(By.id("searchInput")).sendKeys(countryName);
driver.findElement(By.id("searchButton")).click();
String str = driver.findElement(
By.xpath("//h1[@id='firstHeading']/span")).getText();
System.out.println(countryDesc);
Assert.assertTrue(str.contains(countryName));
}
}
et cela a fonctionné.
Cause: l'élément à la position "i" est du type chaîne. Cependant, vous essayez de le convertir en tableau de chaînes.
Solution directe: supprimer [] des deux côtés, c’est-à-dire changer de:
String[] test = (String[]) dataList.get(i);
À:
String test = (String) dataList.get(i);
Cela fonctionnera si votre liste ne contient aucun type de tableau.