12

Ich bin neu im Test so meine Entschuldigung im Voraus, wenn meine Frage ein bisschen primär klingt.Wie bekomme ich HTML-Code eines WebElement in Selen

Ich verwende Selenium und Java, um einen Test zu schreiben.

Ich weiß, dass webElement.getAttribute("innerHTML"); bringt mir die Innerhtml, zum Beispiel für das Element unter:

<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;"> 
    <span class="ui-icon ui-icon-closethick">close</span> 
</a> 

es zurück:

<span class="ui-icon ui-icon-closethick">close</span> 

aber ich brauche etwas, das mir die innere Attribut WebElement bringt "a", etwas wie unten:

href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;" 
+1

Ist das ein Duplikat dieser: https://stackoverflow.com/questions/21681897/getting-all- Attribute-from-a-iwebelement-mit-selen-webdriver – tdrury

Antwort

4
webElement.getAttribute("href"); 
webElement.getAttribute("class"); 
. 
. 
. 

oder sie alle zu bekommen:

Object[] attr = ((JavascriptExecutor)seleniumdriver).executeScript("return arguments[0].attributes);", webElement); 
+0

aber was passiert, wenn ich nicht weiß, welche Attribute dieses Webelement haben kann? – LoveLovelyJava

+0

bearbeitet, um eine generische Methode einzufügen, um alle Argumente zu erhalten - es sollte eine Liste zurückgeben. – tdrury

+0

wie kann ich jacascript nicht verwenden? – LoveLovelyJava

17

Wenn Sie den HTML-Code des Elements selbst möchten, können Sie

webElement.getAttribute("outerHTML"); 

Es wird wieder das HTML des Elements selbst sowie alle Kinder nutzen Elemente. Ich bin mir nicht sicher, ob das genau das ist, was du willst. Ich glaube nicht, dass es eine Möglichkeit gibt, nur den HTML-Code des ausgewählten Elements zu erhalten.

2

Versuchen .getAttribute("innerHTML"); Funktion Quelle in Form einer Zeichenfolge zu extrahieren

Beispielcode:

String source = driver.findElement(By.xpath("/html/body/script[6]")).getAttribute("innerHTML"); 
1

Wenn wir dies:

<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" 
style="position: absolute; border-radius: 0px 0px 4px 4px;"> 
<span class="ui-icon ui-icon-closethick">close</span></a> 

und wir müssen alle Attribute von "a" bekommen was wird das sein:

href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" 
    style="position: absolute; border-radius: 0px 0px 4px 4px;" 

Wir können diesen Code verwenden:

webElement.getAttribute("outerHTML").split(">")[0] 

wo webElement ist "a".

Oder genauer gesagt:

String s = we.getAttribute("outerHTML"); 

s = s.substring(2, s.indexOf(">")); 
+0

Warum in aller Welt hat es -1 bekommen ??? Ich selbst habe diese Frage gepostet und das ist die perfekte Antwort, die ich dafür gefunden habe – LoveLovelyJava

1

Sie innerHTML- Attribut lesen Quelle des Inhalts des Elements oder Outerhtml für Quelle mit dem aktuellen Element zu erhalten.

Beispiel: - Nehmen wir nun an Ihr Element ist als unten

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

Innenelement Ausgangs

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

Außenelement Ausgangs

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

anschauliches Beispiel: -

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

Im Folgenden finden Sie die Syntax, die nach anderen verbindlich erfordern. Ändern Sie die innerHTML nach outerHTML wie erforderlich.

Python:

element.get_attribute('innerHTML') 

Java:

elem.getAttribute("innerHTML"); 

C#:

element.GetAttribute("innerHTML"); 

Rubin:

element.attribute("innerHTML") 

JS:

element.getAttribute('innerHTML'); 

Wenn Sie ganze Seite HTML Verwendung Code unten wollen: -

driver.getPageSource(); 
Verwandte Themen