В настоящее время я работаю над «Библиотекаю Selenium Wrapper Library», где создается набор методов для автоматизации на определенном веб-портале. Эти методы включают ведение журнала отладки и другую логику и вызывается в тестовых классах.Какое исключение бросать, когда веб-элемент находится в Selenium Automation
Я только что создал новый метод проверки наличия ячейки таблицы (имя тега 'td') внутри строки таблицы (имя тега 'tr'). Ниже создан метод:
public void checkEntryIsNotInTable(String elementTableName, By byElementTable, String checkVisibleText1) {
// Get All Rows from table, using tagname <tr>
List<WebElement> tableRows = getElements(elementTableName, byElementTable);
Debug.log.info("\tTotal of [" + tableRows.size() + "] Rows found in table [" + elementTableName + "]");
int rowCount = 0;
boolean isNotFound = false;
FINDCELL:
for(WebElement row : tableRows) {
// Get All Cells from table, using tagname <td>
List<WebElement> rowCells = row.findElements(By.tagName("td"));
if(rowCells == null) {
Debug.log.error("\tNo Elements found with TagName [td] in Element [" + byElementTable + "]");
} else {
Debug.log.info("\tRow [" + rowCount++ + "] contains [" + rowCells.size() + "] Cells");
}
// Check Visible Text in Cell, and if found, break from for loop.
for(WebElement cell : rowCells) {
waitFor(2.0);
if(!cell.getText().contains(checkVisibleText1)){
Debug.log.info("\t[" + checkVisibleText1 + "] not found in any Cell.");
isNotFound = true;
break FINDCELL;
}
}
}
// What kind of exception should I throw here!!
if(isNotFound) {
Debug.log.error("\t[" + checkVisibleText1 + "] found in one Cell.");
throw new NoSuchElementException(checkVisibleText1);
}
}
На данном этапе, когда «checkVisibleText1» найдено, мне нужно бросить новое исключение. Однако для этого метода исключение «NoSuchElementException» не отражает правильное исключение, так как элемент найден - и его не следует искать.
Какое исключение, по вашему мнению, было бы правильным отражать исключение и функциональность метода?
Большое спасибо.
PS. Не стесняйтесь предлагать улучшения коды также :)
того типа ваших требования состояние, которое должно быть выброшено – Stultuske
@Stultuske: я не получил вашего ответа. –
Если бы архитектор, спроектировавший вашу структуру, решил, что вам нужно бросить исключение BoogaBoogaBoogaException, то это то, что оно есть. Нет никаких фиксированных «это то, что вам нужно, ничего больше» стандартного. – Stultuske