2

У меня есть сценарий (внутри тегов <script></script>), который выполняется каждый раз при загрузке страницы. Можно ли удалить WebElement до загрузки страницы в WebDriver, чтобы предотвратить выполнение этого сценария?Удаление части HTML перед загрузкой страницы в WebDriver - Selenium & Python


Я имею в виду что-то в линиях:

Каким-то образом получить сырье HTML код (возможно получить источник или что-то), удалите часть (с селеном или парсер), «впрыснуть» отредактированный код обратно в Selenium (Firefox WebDriver или, возможно, PhantomJS) и, наконец, выполнить его для всех страниц на этом веб-сайте.

Возможно ли это сделать или это возможно невозможно по дизайну?

+0

Есть доступ к исходному HTML? –

+0

Я не знаю, что вы подразумеваете под оригиналом. Но я вижу, что на сайте. Я могу сохранить этот html в виде строки с помощью соответствующего метода, такого как driver.find_element_by_tag_name (). Get_attribute ('outerHTML') (если я правильно помню, я сейчас не на своем главном компьютере. Но поскольку я пытаюсь не запускать этот скрипт и не загружать эту страницу, бесполезно, так как я не могу найти элемент и, таким образом, получить необработанные html-данные без загрузки страницы. – Clone

+1

Selenium сделает запрос и, вероятно, все, что вы сделаете, это после того, как страница уже загружена (и сценарий запускается). Что вы могли бы сделать (это было бы не очень красиво, но ...), это создать дополнение к браузеру, в котором вы запускаете тесты (например, FF или Chrome), чтобы удалить этот скрипт для этого URL, а затем сохраните его профиль.Этот профиль может быть указан при запуске тестов, что помешало бы запуску скрипта. – Tom

ответ

1

Если вы устанавливаете selenium-requests, вы можете сделать запрос GET для страницы, обработать загруженный html/etc и , затем, место на вкладке.

Возможно, сложно вставить обработанный результат, так как вам также необходимо будет установить текущий URL-адрес браузера (просто вставка его вызовет проблемы с междоменной загрузкой скриптов, относительных путей и т. Д.) - возможно, там это способ переопределения (или позволяя перекрытие) ответа «получить», что селен принимает с предварительной обработкой информации

селеном-Requests делает запрос с использованием библиотеки запросов, который использует куки бегущего WebDriver для этого домена и эмулирует HTTP-заголовки по умолчанию, отправленные этим webdriver. Результатом является HTTP-запрос низкого уровня и ответ, созданный с состоянием webdriver. Это необходимо, потому что интерфейс Selenium является очень высокоуровневым и делает гораздо больше, чем открытие страниц, а изучение DOM на самом деле не возможно в Python.