正如标题所说。我有一段代码,这种技术在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。
这样的解决方案是否干净?