Как создать список всех видимых элементов в классе Python

Я использую python 3.x Selenium WebDriver, и я делаю цикл for, чтобы пройти все элементы страницы с ограничением длины элементов в классе, а затем распечатать количество итераций, но он получает все видимые и скрытые элементы, как чтобы получить только видимый элемент на странице.

Чтобы получить все элементы из класса, который я использую

showMore = driver.find_elements_by_class_name('getPhotos')

is_displayed работает только с (найти элемент), а не со списком (найти элементы)

Noran Magdi 30.04.2018 13:51

вы можете перебирать список, а затем вставлять каждый элемент в новый список, если is_displayed = true? это мое последнее предположение по этому поводу, потому что я не нашел ничего лучше

L_Church 30.04.2018 13:59

@L_Church И я думаю, что это правильный подход. Если элемент виден, вставьте основанный элемент в новую коллекцию. Затем просто используйте коллекцию с найденными элементами.

Zhivko.Kostadinov 30.04.2018 15:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
765
2

Ответы 2

Лучшим способом удовлетворить ваши требования будет создание Список, вызывающего WebDriverWait с expected_conditions как visibility_of_all_elements_located следующим образом:

showMore = WebDriverWait(driver, 20).until(expected_conditions.visibility_of_all_elements_located((By.CLASS_NAME, "getPhotos")))

Примечание: visibility_of_all_elements_located относится к ожиданию проверки того, что все элементы присутствуют в HTML DOM страницы и являются видимыми. Видимость означает, что элементы не только отображается, но также имеют высота и ширина, то есть больше 0.

рад видеть, что это привлекло внимание ^^

L_Church 30.04.2018 15:41

Это не сработает, потому что, согласно OP, некоторые элементы видны, а некоторые нет. Этот EC будет ждать, пока не станут видимыми элементы все, что означает тайм-аут.

JeffC 30.04.2018 16:24

Вы можете взять список всех элементов (видимых и невидимых) и отфильтровать его только до тех, которые видны. Есть несколько способов сделать это ... вот один.

showMore = driver.find_elements_by_class_name('getPhotos')
onlyVisible = filter(lambda x: x.is_displayed(), showMore)

Я думаю, что синтаксис хороший, но сейчас у меня нет возможности проверить.

JeffC 30.04.2018 16:35

Другие вопросы по теме