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.

7voto

nefski Punkte 621

Es sieht veraltet aus, aber es soll trotzdem hier stehen. Die richtige Vorgehensweise in Ihrem Fall:

elem = wd.find_element_by_css_selector('#my-id')
html = wd.execute_script("return arguments[0].innerHTML;", elem)

o

html = elem.get_attribute('innerHTML')

Beide funktionieren bei mir (selenium-server-standalone-2.35.0).

6voto

Tiffany G Punkte 203

Die Verwendung der Attributmethode ist in der Tat einfacher und unkomplizierter.

Wenn Sie Ruby mit den Selenium- und PageObject-Gems verwenden, um die einem bestimmten Element zugeordnete Klasse zu ermitteln, lautet die Zeile element.attribute(Class) .

Das gleiche Konzept gilt, wenn Sie andere mit dem Element verknüpfte Attribute abrufen möchten. Zum Beispiel, wenn ich die String eines Elements, element.attribute(String) .

4voto

WltrRpo Punkte 263

Java mit Selenium 2.53.0

driver.getPageSource();

4voto

Shubham Jain Punkte 14526

InnerHTML gibt das Element innerhalb des ausgewählten Elements zurück, und outerHTML gibt den HTML-Code innerhalb des Elements zusammen mit dem ausgewählten Element zurück

Exemple :

Nehmen wir nun an, Ihr Element ist wie folgt

<tr id="myRow"><td>A</td><td>B</td></tr>

Ausgabe des innerHTML-Elements

<td>A</td><td>B</td>

Ausgabe des outerHTML-Elements

<tr id="myRow"><td>A</td><td>B</td></tr>

Live-Beispiel:

http://www.java2s.com/Tutorials/JavascriptDemo/f/find_out_the_difference_between_innerhtml_and_outerhtml_in_javascript_example.htm

Nachstehend finden Sie die Syntax, die für die verschiedenen Bindungen erforderlich ist. Ändern Sie die innerHTML a outerHTML je nach Bedarf.

Python:

element.get_attribute('innerHTML')

Java:

elem.getAttribute("innerHTML");

Wenn Sie HTML für die gesamte Seite wünschen, verwenden Sie den unten stehenden Code:

driver.getPageSource();

2voto

oleksii.burdin Punkte 53

Ich hoffe, das könnte helfen: http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebElement.html

Hier wird die Java-Methode beschrieben:

java.lang.String    getText() 

Aber leider ist sie in Python nicht verfügbar. Sie können also die Methodennamen von Java in Python übersetzen und eine andere Logik mit den vorhandenen Methoden ausprobieren, ohne den gesamten Seitenquelltext zu erhalten...

z.B.

 my_id = elem[0].get_attribute('my-id')

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