Вместо использования findElement
вы должны использовать findElements
метод селеном WebDriver. Он будет напрямую возвращать список веб-элементов. Использовать по функциям селена создать пользовательский метод getBy, который будет использовать по абстрактному классу.
public List<WebElement> findElements(String locator, long... timeOut) {
try {
if (timeOut.length == 1 && timeOut[0] == 0) {
return driver.findElements(getBy(locator));
} else if (timeOut.length == 1 && timeOut[0] > 0) {
waitForPresent(locator, timeOut[0]);
} else {
waitForPresent(locator);
}
} catch (Exception e) {
}
return driver.findElements(getBy(locator));
}
String xPath = "xpath=//*[@text='some text']";
//String xPath = "name='some text'";
//String xPath = "id=xxxx";
private By getBy(String locator) {
locator = getProps().getString(locator, locator);
String[] parts = locator.split("=", 2);
By by = null;
switch (parts[0].trim()) {
case "xpath":
by = By.xpath(parts[1]);
break;
case "name":
by = By.name(parts[1]);
break;
case "link":
by = By.linkText(parts[1]);
break;
case "id":
by = By.id(parts[1]);
break;
case "css":
by = By.cssSelector(parts[1]);
break;
default:
throw new RuntimeException("invalid locator");
}
return by;
}
Почему не 'list.size()'? вместо N. – Guy
@guy, вы правы. 'weblist.size() 'может заменить' N'. Часть кода, о которой идет речь, не является полной, поэтому я не хотел делать больше предположений. обновил ответ. – parishodak