我收到此错误 - >
java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String;
从下面粘贴的代码中。
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));
}
}
}
我认为问题出在String[] test = (String[]) dataList.get(i);
但我不确定如何解决此异常..有任何线索吗?
答案 0 :(得分:9)
你不能施放&#34; String&#34;进入&#34;字符串阵列&#34;。
您只能将字符串放入数组中的插槽中。
你能做的是:
String theString = "whatever";
String[] myStrings = { theString };
答案 1 :(得分:1)
查看代码,我相信您尝试将列表转换为数组,因此您的&#34;问题行&#34;应该如下:
String[] test = (String[]) dataList.toArray(new String[dataList.size]);
答案 2 :(得分:0)
原因:“i”位置的元素是string类型。但是,您正在尝试将其强制转换为字符串数组。
直接解决方案:从两侧移除[],即改为:
String[] test = (String[]) dataList.get(i);
要:
String test = (String) dataList.get(i);
如果您的List不包含任何类型的数组,这将有效。
答案 3 :(得分:0)
thankyou Guys。是的,我正在尝试将列表对象强制转换为字符串数组。我找到了问题。更正了代码。
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));
}
}
它有效。