将页面工厂与页面对象模式组合为反模式

时间:2018-09-01 05:17:01

标签: java selenium page-factory

正如标题所说。我有一段代码,这种技术在IMO中是合理的。

我有一个带有的页面,并且每行包含(其中包括)其ID取决于行号的产品名称:

<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,如果抛出则返回null。

这样的解决方案是否干净

0 个答案:

没有答案