Я пытаюсь автоматизировать одну функцию на сайте Amazon по этому URL.
Я получаю пустой список при отладке этой строки:
List<WebElement> e = driver.findElements(By.className("a-box-inner a-padding-extra-large"));
Исходный код сайта выглядит следующим образом:
Мой вопрос: почему я получаю пустой список, а не список со всеми выбранными элементами div?




С методом By.className(String) можно использовать только одно имя класса. Из JavaDoc:
Поиск элементов на основе значения атрибута «класс». Следует использовать только одно имя класса. Если элемент имеет несколько классов, используйте cssSelector(String).
Вместо этого вы можете использовать метод By.cssSelector(String):
driver.findElements(By.cssSelector("div[class='a-box-inner a-padding-extra-large']"));
Текущая установка дает вам внешний элемент. Если вам нужны внутренние элементы, то я считаю, что вы можете сделать e.findElements(By.xpath(".//*")) (где e — это 1 элемент, который вы только что нашли). Или вы можете изменить запрос CSS, чтобы настроить таргетинг на все внутренние элементы (может быть, что-то вроде div.a-box-inner.a-padding-extra-large > *, но я не проверял).
"//div[@class='a-box-inner a-padding-extra-large']/*" сработало для меня
Благодарю. Знаете ли вы, почему таким образом я получаю список с 1 значением, а не со всеми элементами, которые появляются на изображении?