Как взаимодействовать с элементом до его рендеринга в HTML DOM через Selenium и Python

Можно ли запросить URL-адрес и проверить элементы перед отображением страницы? Я использую Python + Selenium.

1 ответ

Решение

Одним словом ответ на ваш вопрос будет Да.

объяснение

Обычно каждый веб-элемент на веб-странице имеет 3 (три) различных состояния следующим образом:

  • presence: Элемент присутствует в DOM страницы.
  • visibility: Элемент присутствует в DOM страницы и виден.
  • interactable (т.е. clickable ): Элемент виден и активирован таким образом, что вы можете щелкнуть по нему.

Когда Selenium загружает веб-страницу / URL по умолчанию, она следует конфигурации по умолчанию pageLoadStrategy установлен в normal, Вы можете отказаться от полной загрузки страницы. Поэтому, чтобы не ждать загрузки полной веб-страницы, вы можете настроить pageLoadStrategy, pageLoadStrategy поддерживает 3 различных значения следующим образом:

  1. normal (полная загрузка страницы)
  2. eager (Интерактивный)
  3. none

Вот пример блока кода для настройки pageLoadStrategy:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

caps = DesiredCapabilities().FIREFOX.copy()
caps["pageLoadStrategy"] = "none"
driver = webdriver.Firefox(desired_capabilities=caps, executable_path=r'C:\path\to\geckodriver.exe')
driver.get("http://google.com")

Вы можете найти подробное обсуждение в разделе Как заставить Selenium не ждать полной загрузки страницы с медленным сценарием?

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