java - 从网站获取价值,但 java 代码不起作用。怎么修?
问题描述
我的代码不起作用。它给出了这一行的错误“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 at java.lang.String.substring(String.java:1967) at framework.DarkskyTS.etr(DarkskyTS.java:138) at stepdefinition.DarkskySD.currentTempGreaterOrless(DarkskySD.java:39 )在✽。然后我验证当前温度不大于或小于每日时间线的温度(darksky.feature:25)
失败的场景:darksky.feature:24 # 场景:验证当前温度不应高于或低于每日时间线的温度
1 个场景(1 个失败)2 个步骤(1 个失败,1 个通过)0m5.234s public void 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 );
}
解决方案
该消息告诉您"˚ "
在您尝试解析的字符串中找不到。像@Ashish 一样,我怀疑这是由学位符号后面的空格引起的。您的新行应如下所示:
int lineTemp = Integer.parseInt(sLIneTemp.substring(0, sLIneTemp.indexOf("˚")));
推荐阅读
- rspec - Net :: ReadTimeout 发生在 Rails SystemTest 中
- html - 为什么我的 CSS 在放入 div 时只影响 IMG?
- php - XDebug 仅适用于 localhost 而不是远程主机
- sql - 大数据集的中位数,之前可以聚合吗?
- java - Maven 项目继承:无法解析来自父项目的导入
- python - 如何根据多个属性对列表项进行排序,而最后一个优先级是字母?
- javascript - 是否可以用线条或不是矩形的画布制作带有背景的画布?
- python-3.x - 为什么在 python 中使用求和方程只显示 0 个值
- c# - DateTime.ToString(String, IFormatProvider) 不适用于 Xamarin.Forms 中的波斯文 CultureInfo“fa-IR”
- java - Java中使用DAO模式的多对多关系