Я использую привязки Python для запуска Selenium WebDriver:
from selenium import webdriver
wd = webdriver.Firefox()
Я знаю, что могу взять вот так вот:
elem = wd.find_element_by_css_selector('#my-id')
И я знаю, что могу получить полный источник страницы с ...
wd.page_source
Но есть ли способ получить «источник элемента»?
elem.source # <-- returns the HTML as a string
Документы Selen для веб-драйверов для Python в основном не существуют, и я не вижу ничего в коде, который, кажется, включает эту функциональность.
Есть мысли о том, как лучше всего получить доступ к HTML-элементу (и его дочерним элементам)?
wd.page_source
с BeautifulsoupОтветы:
Вы можете прочитать
innerHTML
атрибут, чтобы получить источник содержимого элемента илиouterHTML
источник с текущим элементом.Python:
Ява:
C #:
Рубин:
JS:
PHP:
Проверено и работает с
ChromeDriver
.источник
getAttribute
метод (или эквивалент в других языках) просто вызывает метод js, имя которого - arg. Однако в документации явно не сказано об этом, поэтому решение nilesh должно быть запасным вариантом.HtmlUnitDriver
. Работает наChromeDriver
,FirefoxDriver
,InternetExplorerDriver
(IE10) иPhantomJSDriver
(я не проверял другие).На самом деле нет простого способа получить HTML-код исходного кода
webelement
. Вам придется использовать JS. Я не слишком уверен в привязках Python, но вы можете легко сделать это в Java. Я уверен, чтоJavascriptExecutor
в Python должно быть что-то похожее на класс.источник
innerHTML
не является атрибутом DOM. Когда я ответил на этот вопрос в 2011 году, он не работал для меня, похоже, что некоторые браузеры его поддерживают. Если это работает для вас, то используйтеinnerHTML
чище. Однако нет гарантии, что он будет работать во всех браузерах.Конечно, мы можем получить весь исходный код HTML с помощью этого скрипта ниже в Selenium Python:
Если вы хотите сохранить его в файл:
Я предлагаю сохранить в файл, потому что исходный код очень очень длинный.
источник
В Ruby, использующем selenium-webdriver (2.32.1), существует
page_source
метод, который содержит весь исходный код страницы.источник
Использование метода атрибута, на самом деле, проще и понятнее.
Используя Ruby с гемами Selenium и PageObject, чтобы получить класс, связанный с определенным элементом, строка будет такой
element.attribute(Class)
.Та же концепция применяется, если вы хотите привязать другие атрибуты к элементу. Например, если я хотел строку элемента,
element.attribute(String)
.источник
Выглядит устаревшим, но пусть это будет здесь в любом случае. Правильный способ сделать это в вашем случае:
или
Оба работают на меня (selenium-server-standalone-2.35.0)
источник
Ява с Селеном 2.53.0
источник
getPageSource
метод может не возвращать фактический источник страницы (т.е. с возможными изменениями JavaScript). Возвращенный источник может быть необработанным источником, отправленным сервером. Чтобы убедиться в этом, необходимо проверить документ веб-драйвера.Я надеюсь, что это может помочь: http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html
Здесь описан метод Java:
Но, к сожалению, он недоступен в Python. Таким образом, вы можете перевести имена методов в Python из Java и попробовать другую логику, используя существующие методы, не получая весь исходный код страницы ...
Например
источник
Это работает без проблем для меня.
источник
InnerHTML вернет элемент внутри выбранного элемента, а outerHTML вернет элемент HTML вместе с выбранным вами элементом
Пример: - Теперь предположим, что ваш Элемент, как показано ниже
Вывод элемента innerHTML
Вывод элемента externalHTML
Живой пример: -
http://www.java2s.com/Tutorials/JavascriptDemo/f/find_out_the_difference_between_innerhtml_and_outerhtml_in_javascript_example.htm
Ниже вы найдете синтаксис, который требует различных привязок. Изменение
innerHTML
кouterHTML
согласно необходимости.Python:
Ява:
Если вы хотите HTML-код всей страницы, используйте следующий код: -
источник
Этот код действительно работает для получения JavaScript из исходного кода!
источник
А в тесте на селен PHPUnit это выглядит так:
источник
Если вы заинтересованы в решении для удаленного управления в Python, вот как получить innerHTML:
источник
innerHTML = {solenium selector code}.text
работы точно такими же.Метод получения визуализированного HTML, который я предпочитаю, следующий:
Однако приведенный выше метод удаляет все теги (да и вложенные теги) и возвращает только текстовое содержимое. Если вы также заинтересованы в получении HTML-разметки, используйте метод ниже.
источник