Мой код не работает. для этой строки выдается ошибка "int temp = Integer.parseInt (currentTemp.substring (0, currentTemp.indexOf (" ˚ ")));" Я пробовал несколько способов, но не смог. Может быть, другой фактор влияет на это. Есть идея починить?
Ошибка здесь:
Фон: # darksky.feature: 5
Учитывая, что я на Darksky Home Page # 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
Затем я проверяю, что текущая временная температура не больше или меньше временных значений на дневной временной шкале.
java.lang.StringIndexOutOfBoundsException: индекс строки вне диапазона: -1
в java.lang.String.substring (String.java:1967)
на framework.DarkskyTS.etr (DarkskyTS.java:138)
на шаге определения. DarkskySD.currentTempGreaterOrless (DarkskySD.java:39)
в T. Затем я проверяю, что текущая температура не больше или меньше, чем временная температура от дневного графика времени (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 );
}