Объединяет фабрику страниц с шаблоном объекта страницы как анти-шаблон - PullRequest
0 голосов
/ 01 сентября 2018

Как гласит заголовок. У меня есть кусок кода, где такая техника оправдана ИМО.

У меня есть страница с таблицей , и каждая строка содержит, среди прочего, название продукта, идентификатор которого зависит от номера строки:

<table>
  <tr><td>...</td><td name ="product1">i fon</td></tr>
  <tr><td name ="product2">TV</td></tr>
</table>

Я нахожу строки с аннотацией PageFactory:

@FindBy(How= blablabla)
List<WebElement> rows;

Только тогда я знаю, сколько товаров на странице, поэтому я нахожу каждый товар:

    List<String> productNames = new Vector<>();
Iterator<WebElement> itemRowsIter = rows.iterator();

    int rowIndex = 0;
    while (itemRowsIter.hasNext()) {
        By itemLocator = By.name("product" + rowIndex);
        WebElement link = quietlyFindElement(driver, itemLocator, itemRowsIter.next());
        Optional<String> text = Optional.ofNullable(link)
                .map(WebElement::getText);
        text.ifPresent(productNames::add);
        rowIndex++;
    }

quietlyFindElement ищет элемент в Selenium, перехватывает NoSuchElementException и TimeoutException и возвращает ноль, если они выброшены.

Является ли такое решение чистым ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...