Обходной путь стратегии загрузки страницы для Selenium Chromedriver в Python - PullRequest
0 голосов
/ 28 июня 2018

Я хочу ускорить время загрузки страниц на селене, потому что мне не нужно ничего, кроме HTML (я пытаюсь очистить все ссылки, используя BeautifulSoup). Использование PageLoadStrategy.NONE не работает для очистки всех ссылок, и Chrome больше не поддерживает PageLoadStrategy.EAGER. Кто-нибудь знает обходной путь для получения PageLoadStrategy.EAGER в python?

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

ChromeDriver - это автономный сервер , который реализует протокол связи WebDriver для Chromium. Chrome и Chromium все еще находятся в процессе внедрения и перехода на стандарт W3C . В настоящее время ChromeDriver доступен для Chrome на Android и Chrome на рабочем столе (Mac, Linux, Windows и ChromeOS).

Согласно текущему черновику редактора WebDriver W3C Ниже приведена таблица стратегий загрузки страниц, которая связывает ключевое слово pageLoadStrategy в состояние стратегии загрузки страницы и показывает, какое состояние готовности документа ему соответствует:

page loading strategy

Однако, если вы наблюдаете текущую реализацию ChromeDriver , Chrome DevTools действительно учитывает следующее document.readyStates :

  • document.readyState == 'complete'
  • document.readyState == 'interactive'

Вот пример соответствующего журнала:

[1517231304.270][DEBUG]: DEVTOOLS COMMAND Runtime.evaluate (id=11) {
   "expression": "var isLoaded = document.readyState == 'complete' ||    document.readyState == 'interactive';if (isLoaded) {  var frame = document.createElement('iframe');  frame.name = 'chromedriver dummy frame'; ..."
}

В соответствии с WebDriver Status вы найдете список всех команд WebDriver и их текущую поддержку в ChromeDriver в зависимости от того, что находится в Спецификация WebDriver . Как только реализация завершена со всех сторон PageLoadStrategy.EAGER обязательно будет присутствовать в Chrome Driver .

0 голосов
/ 28 июня 2018

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

...