Как обработать исключение NoSuchElementException для пустого элемента. И все же выполнить следующую строку кода? - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь получить текст динамической веб-таблицы на листе Excel, иногда текст присутствует в строках столбца, а иногда нет .. Когда текст присутствует в строке таблицы, я хочу получить текст этой ячейки.Использование метода getText, но когда нет текста, я хочу написать пустой текст и оставить ячейку пустой ... Но это дает исключение NoSuchElementException .. как с этим справиться .. ??любая помощь будет оценена .. спасибо заранее ..

    String actualXpath_SL = beforeXpath_SL + j + afterXpath_SL;
    String SL = driver.findElements(By.xpath(actualXpath_SL)).getText()

    currentRow.createCell(0).setCellValue(SL);

Ответы [ 2 ]

2 голосов
/ 05 мая 2019

Чтобы продолжить вашу программу, когда селен не находит элемента, вы можете сделать две вещи.

  • Поместите код в блок try и обработайте NoSuchElementException в блоке catch.
String OneA = "";
try{
    //find element
    OneA = driver.findElement(By.xpath(actualXpath_1A)).getText();
}catch (NoSuchElementException e){
    //stacktrace and other code after catching the exception
    e.printStackTrace();
}

Или , вы можете использовать findElements и убедиться, что возвращаемый список пуст или нет.

List<WebElement> elements  = driver.findElements(By.xpath(actualXpath_1A));
String OneA = "";
if(!elements.isEmpty()){
    OneA = elements.get(0).getText();
} else {
    //Handle if no element present
}

второе решение позволяет избежать исключения и работает быстрее, чем ожидание исключения.

0 голосов
/ 05 мая 2019

Вы должны использовать .size()>0, а не isEmpty()

String actualXpath_2S = beforeXpath_2S + j + afterXpath_2S;
List<WebElement> eight = driver.findElements(By.xpath(actualXpath_2S));
String TwoS="";
if(eight.size()>0){
    TwoS = eight.get(0).getText();
}

Вы должны обновить логику для всех, если используются условия, isEmpty.

...