【发布时间】:2024-05-04 14:15:03
【问题描述】:
我的代码不起作用。它给出了这一行的错误“int temp = Integer.parseInt(currentTemp.substring(0, currentTemp.indexOf("˚ ")));"我尝试了几种方法,但我做不到。也许有不同的因素会影响它。有什么想法可以解决吗? 错误在这里:
背景:#darksky.feature:5 鉴于我在 Darksky 主页 # DarkskySD.iAmOnDarkskyHomePage() 当前温度:43° 当前温度:43˚ 雨。
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1
at java.lang.String.substring(String.java:1967)
at framework.DarkskyTS.etr(DarkskyTS.java:138)
at stepdefinition.DarkskySD.currentTempGreaterOrless(DarkskySD.java:39)
at ✽.Then I verify current temp is not greater or less then temps from daily timeline(darksky.feature:25)
@currenttempgreaterorless 场景:验证当前温度不应高于或低于每日时间线中的温度 #darksky.feature:24 然后我验证当前温度不大于或小于每日时间线中的温度 #DarkskySD.currentTempGreaterOrless() java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 在 java.lang.String.substring(String.java:1967) 在 framework.DarkskyTS.etr(DarkskyTS.java:138) 在 stepdefinition.DarkskySD.currentTempGreaterOrless(DarkskySD.java:39) 在✽。然后我验证当前温度不大于或小于每日时间线的温度(darksky.feature:25)
失败的场景: darksky.feature:24 # 场景:验证当前温度不应高于或低于每日时间线的温度
1 个场景(1 个失败) 2 个步骤(1 个失败,1 个通过) 0m5.234s 公共无效 tempValue(){
String currentTemp = SharedSD.getDriver().findElement(By.cssSelector(".summary.swap")).getText();
System. out.println("Current Temp:" + currentTemp);
List<WebElement> tempsInTimeLine = SharedSD.getDriver().findElements(By.cssSelector(".temps span:last-child"));
int temp = Integer.parseInt(currentTemp.substring(0, currentTemp.indexOf("˚ ")));
int highestInTimeLine = temp;
int lowestInTimeLine = temp;
for (WebElement tempInTime: tempsInTimeLine) {
String sLIneTemp = tempInTime.getText();
int lineTemp = Integer.parseInt(sLIneTemp.substring(0, sLIneTemp.indexOf("˚ ")));
if (lineTemp > highestInTimeLine){
highestInTimeLine = lineTemp;
}
if (lineTemp < lowestInTimeLine ){
lowestInTimeLine = lineTemp;
}
//int lineTemp = Integer.parseInt(sLIneTemp.substring(0, sLIneTemp.indexOf("˚ ")));
}
System. out.println("Highest Temp:" + highestInTimeLine);
System. out.println("Lowest Temp:" + lowestInTimeLine );
}
【问题讨论】:
-
能否将完整的错误文本添加到您的问题中?
-
你为什么要使用 .indexOf("˚ ") ?为什么你不能总是使用 .indexOf("˚") ?度数符号后总是有空格吗?假设当前温度 String currentTemp = "-10˚";在这种情况下,度数符号后没有空格,异常消息将为
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1。所以很可能,如果你能确保你的学位符号后面总是有一个空格,那么你的程序可能会工作。
标签: java selenium automation cucumber