List<WebElement> fields are decorated if and only if they have @FindBy or @FindBys annotation. Default search strategy “by id or name” that works for WebElement fields is hardly suitable for lists because it is rare to have several elements with the same id or name on a page.
Да. Эта аннотация является частью реализации шаблона PageObject, если я не ошибаюсь.Класс = страница сайта, поле класса = html элемент на странице.
Вам наверно подойдет такое решение:
Можно так же ограничить контекст поиска внешним элементом:
List<WebElement> outerBlocksList = driver.findElements(By.сssSelector("div.text-block"));
//Потом например хотим внутренний блок найти внутри третьего элемента списка
WebElement innerElemForThirdBlock = outerBlocksList[2].findElement(By.cssSelector("div.inner-block"))
К сожалению нет джавы под рукой, могу в синтаксисе ошибатся
локатор если нужны внутренние елементы: By.cssSelector(".textblock .inner-block")
или если нужно учитывать, что иннер сразу внутри текст блока: By.cssSelector(".textblock>.inner-block")
если нужен текст-блок елемент внутри которого есть иннер By.xPath("//*[contains(@class,'text-block')][.//*[contains(@class,'inner-block')]]")
если уверены что нужен ‘equals’ клас а не ‘contains’ то будет короче (но не советую) By.xPath("//*[@class='text-block'][.//div[@class='inner=block']]')
из локаторов можете получать как 1 елемент так и лист елементов
есть вариант селенидом если нужны внутренние елеменеты:
а вообще советую задать полный вопрос - что и зачем вы хотите получить. Вам точно нужно “перебирать” елементы? Очень сомневаюсь) Если нужен просто див внутри которого есть что-то другое - то смотрите By.xPath в моем ответе выше.