Как взаимодействовать с элементом до его рендеринга в HTML DOM через Selenium и Python
Можно ли запросить URL-адрес и проверить элементы перед отображением страницы? Я использую Python + Selenium.
1 ответ
Одним словом ответ на ваш вопрос будет Да.
объяснение
Обычно каждый веб-элемент на веб-странице имеет 3 (три) различных состояния следующим образом:
presence
: Элемент присутствует в DOM страницы.visibility
: Элемент присутствует в DOM страницы и виден.interactable
(т.е.clickable
): Элемент виден и активирован таким образом, что вы можете щелкнуть по нему.
Когда Selenium загружает веб-страницу / URL по умолчанию, она следует конфигурации по умолчанию pageLoadStrategy
установлен в normal
, Вы можете отказаться от полной загрузки страницы. Поэтому, чтобы не ждать загрузки полной веб-страницы, вы можете настроить pageLoadStrategy
, pageLoadStrategy
поддерживает 3 различных значения следующим образом:
normal
(полная загрузка страницы)eager
(Интерактивный)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 не ждать полной загрузки страницы с медленным сценарием?