Проверка видимости и присутствия элементов в HTML



WebDriverWait(browser, poll_frequency=0.5, timeout=10).until(EC.presence_of_element_located(locator))

.presence_of_element_located()

EC.presence_of_element_located(locator) — это одно из ожидаемых условий , которое помогает нам убедиться, что элемент присутствует на веб-странице.

locator— кортеж, содержащий два элемента: тип поиска (By.ID, By.XPATH и т. д.) и значение для поиска.

Что это проверяет?

Этот метод проверяет наличие элемента на странице. Но важно понимать, что «присутствие» не означает «видимость». То есть элемент может быть на странице, но скрыт от пользователя (например, имеет стиль display: none).

Как использовать?

Чтобы использовать это условие, вам нужно передать локатор — это способ указать Selenium, какой именно элемент вы ищете. Локатор — это кортеж из двух частей: способа поиска (например, By.ID или By.XPATH) и самого значения, по которому идет поиск.

locator = (By.ID, 'some_element_id')
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located(locator))

.visibility_of_element_located()

EC.visibility_of_element_located(locator) — это одно из ожидаемых условий, позволяющее убедиться, что элемент не только присутствует на странице, но и видим пользователю.

locator— такой же, как и выше

Чем отличается от простого «присутствия»?

Есть элементы, которые могут быть на веб-странице, но при этом они скрыты от пользователя, например, из-за стиля display: none или visibility: hidden. Это условие учитывает не только наличие элемента в DOM-структуре страницы, но и его реальную видимость на экране.

Как использовать?

Также как и для presence_of_element_located, вам нужно передать локатор, указывающий на интересующий вас элемент.

locator = (By.XPATH, '//div[@class="visible_class"]')
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located(locator))

.visibility_of()

EC.visibility_of(element)— Это условие ожидания, которое проверяет, является ли конкретный элемент видимым на веб-странице.

element— это уже найденный элемент Selenium.

В чем его особенность?

В отличие от других условий, которые используют локаторы для указания на элемент, visibility_of принимает уже найденный элемент в качестве параметра. Это особенно удобно, когда у вас уже есть ссылка на объект элемента, и вы хотите убедиться в его видимости.

Как это работает?

Это условие проверяет, что элемент не только присутствует в DOM-структуре страницы, но и виден пользователю (например, у него нет атрибутов display: none или visibility: hidden).

element = driver.find_element(By.ID, 'visible_element_id')
visible_element = WebDriverWait(driver, 10).until(EC.visibility_of(element))

presence_of_all_elements_located()

EC.presence_of_all_elements_located(locator)— В некоторых ситуациях вам может потребоваться работать не с одним элементом, а с группой элементов, например, со списком или рядом кнопок. Используя это условие, вы можете удостовериться, что все эти элементы загрузились и присутствуют на странице перед тем, как начать с ними взаимодействие. Метод проверяет наличие всех элементов, указанных локатором, в DOM-структуре страницы. Однако стоит помнить, что «присутствие» не гарантирует «видимость» элемента.

locator — такой же, как и выше.

locator = (By.CLASS_NAME, 'some_class_name')
elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located(locator))

​​​​​​visibility_of_any_elements_located()

EC.visibility_of_any_elements_located(locator)— Это ожидаемое условие, которое проверяет видимость хотя бы одного элемента из группы элементов, соответствующих заданному локатору.

locator — такой же, как и выше.

Зачем это нужно?

Иногда на странице может быть несколько элементов с одинаковыми или похожими характеристиками (например, элементы списка). И вам может быть важно убедиться, что хотя бы один из этих элементов действительно виден пользователю, прежде чем продолжить выполнение вашего кода.

Как это работает?

Это условие осуществляет поиск всех элементов по заданному локатору и возвращает список видимых элементов. Если этот список не пуст, условие считается выполненным.

locator = (By.TAG_NAME, 'li')
visible_elements = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located(locator))

visibility_of_all_elements_located()

EC.visibility_of_all_elements_located(locator)— Это ожидаемое условие, которое убеждается в том, что абсолютно все элементы, соответствующие указанному локатору, являются видимыми на веб-странице.

locator — такой же, как и выше.

Почему это важно?

В определенных сценариях вам может потребоваться удостовериться, что каждый элемент из группы является доступным для пользователя. Например, если все пункты меню должны быть видимыми или все чекбоксы доступны для выбора.

Как это работает?

Это условие выполняет поиск всех элементов по заданному локатору. Если все найденные элементы видимы, условие считается выполненным.

locator = (By.CSS_SELECTOR, '.visible_elements')
all_visible_elements = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located(locator))


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: