673 Stimmen

HTML-Quelle von WebElement in Selenium WebDriver mit Python abrufen

Ich verwende die Python-Bindungen zum Ausführen von Selenium WebDriver:

from selenium import webdriver
wd = webdriver.Firefox()

Ich weiß, dass ich ein Webelement wie folgt greifen kann:

elem = wd.find_element_by_css_selector('#my-id')

Und ich weiß, dass ich die volle Seitenquelle mit...

wd.page_source

Aber gibt es eine Möglichkeit, die "Elementquelle" zu erhalten?

elem.source   # <-- returns the HTML as a string

Die Selenium WebDriver-Dokumentation für Python ist im Grunde genommen nicht vorhanden, und ich sehe im Code nichts, was diese Funktionalität zu ermöglichen scheint.

Wie kann man am besten auf den HTML-Code eines Elements (und seiner Kinder) zugreifen?

12 Stimmen

Sie könnten auch einfach alle wd.page_source mit beautifulsoup

0 Stimmen

Selen hat mehr Möglichkeiten als eine schöne Suppe.

2voto

Rusty Punkte 3390

Die von mir bevorzugte Methode, um das gerenderte HTML zu erhalten, ist die folgende:

driver.get("http://www.google.com")
body_html = driver.find_element_by_xpath("/html/body")
print body_html.text

Die obige Methode entfernt jedoch alle Tags (ja, auch die verschachtelten Tags) und gibt nur den Textinhalt zurück. Wenn Sie auch die HTML-Auszeichnung erhalten möchten, verwenden Sie die folgende Methode.

print body_html.getAttribute("innerHTML")

2voto

Jitendra Pisal Punkte 91

Für mich funktioniert das reibungslos.

element.get_attribute('innerHTML')

0voto

wowandy Punkte 908

Unter PHP Selenium WebDriver können Sie die Quelle der Seite wie folgt erhalten:

$html = $driver->getPageSource();

Oder holen Sie sich den HTML-Code des Elements wie folgt:

// innerHTML if you need HTML of the element content
$html = $element->getDomProperty('outerHTML');

0voto

christian Punkte 162

In den aktuellen Versionen von php-web-treiber (1.12.0+) können Sie verwenden

$element->getDomProperty('innerHTML');

wie in dieser Ausgabe dargelegt: https://github.com/php-webdriver/php-webdriver/issues/929

0voto

user2849367 Punkte 58

Verwenden Sie execute_script get html

bs4(BeautifulSoup) kann auch schnell auf html-Tags zugreifen.

from bs4 import BeautifulSoup
html = adriver.execute_script("return document.documentElement.outerHTML")
bs4_onepage_object=BeautifulSoup(html,"html.parser")
bs4_div_object=bs4_onepage_object.find_all("atag",class_="attribute")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X