Heim >Backend-Entwicklung >Python-Tutorial >Selenium „.text' vs. „.get_attribute('innerHTML')`: Wann sollte ich jedes verwenden?
Bei der Interaktion mit Webelementen mithilfe von Selenium erhalten Sie Ihr Textgehalt kann durch unterschiedliche Ansätze erreicht werden. Dazu gehören .text und .get_attribute("innerHTML"). Obwohl sie austauschbar erscheinen mögen, gibt es grundlegende Unterschiede zwischen den beiden und es gibt bestimmte Fälle, in denen das eine passender ist als das andere.
.get_attribute("innerHTML" ) ruft das innerHTML eines Elements ab, einschließlich seines gesamten Inhalts und Markups. Diese Methode versucht zuerst, die Eigenschaft mit dem angegebenen Namen abzurufen. Wenn keine Eigenschaft vorhanden ist, wird das Attribut mit demselben Namen zurückgegeben. Wenn keines von beiden gefunden wird, wird None zurückgegeben.
Werte, die als wahr gelten (entspricht wahr oder falsch), werden als boolesche Werte gerendert. Umgekehrt werden alle anderen Nicht-None-Werte als Zeichenfolgen zurückgegeben. Für Attribute oder Eigenschaften, die nicht vorhanden sind, wird None zurückgegeben.
Argumente:
Beispiel:
# Get the innerHTML of an element html = target_element.get_attribute("innerHTML")
.text ruft den Textinhalt eines Elements ab, ohne Markup oder Styling.
Definition:
def text(self): """The text of the element.""" return self._execute(Command.GET_ELEMENT_TEXT)['value']
Beispiel:
# Get the text of an element text = target_element.text
Trotz der oberflächlichen Ähnlichkeit von .text und .get_attribute("innerHTML") sind entscheidende Unterschiede zu berücksichtigen:
Beim Laden einer Webseite interpretiert der Browser den HTML-Code und erstellt DOM-Objekte. Im HTML-Code definierte Attribute werden zu Eigenschaften dieser DOM-Objekte. Wenn ein Attribut jedoch für ein bestimmtes Element nicht standardmäßig ist, verfügt es nicht über eine entsprechende Eigenschaft.
In solchen Fällen kann auf Attribute mit den folgenden Methoden zugegriffen werden:
Standardattribute in HTML werden normalerweise mit ihren entsprechenden Eigenschaften synchronisiert. Das bedeutet, dass die Eigenschaft automatisch aktualisiert wird, wenn ein Attribut geändert wird, und umgekehrt.
In Python wird auf ein Attribut mithilfe der Punktnotation zugegriffen (z. B. someObj .Name). Es kann entweder eine Instanzvariable sein oder über spezielle Getter- und Setter-Methoden, die als Eigenschaften definiert sind, darauf zugegriffen werden.
Die Wahl zwischen .text und .get_attribute("innerHTML") beim Extrahieren von Elementinhalten hängt davon ab den spezifischen Anforderungen der Automatisierungsaufgabe. Wenn das Ziel darin besteht, den sichtbaren Text ohne Markup oder Stile zu erhalten, ist .text ideal. Wenn alternativ eine vollständige Darstellung des HTML-Inhalts benötigt wird, einschließlich aller Elemente und ihrer Formatierung, ist .get_attribute("innerHTML") die geeignete Wahl.
Das obige ist der detaillierte Inhalt vonSelenium „.text' vs. „.get_attribute('innerHTML')`: Wann sollte ich jedes verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!