web-dev-qa-db-fra.com

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?

6
Shari

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 };
9
GhostCat

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]);
1
Sasha

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é. 

0
Shari

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.

0
gautam