12

Sono nuovo al test quindi mi scuso in anticipo se la mia domanda suona un po 'primaria.Come ottenere il codice HTML di un WebElement in Selenium

Sto utilizzando Selenium e Java per scrivere un test.

so che webElement.getAttribute("innerHTML"); mi porta l'innerHTML, ad esempio per l'elemento di seguito:

<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> 

restituisce:

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

ma ho bisogno di qualcosa che mi porta l'attributo interno di WebElement "a", qualcosa di simile di seguito:

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

È questo un duplicato di questo: https://stackoverflow.com/questions/21681897/getting-all- attributes-from-an-iwebelement-with-selenium-webdriver – tdrury

risposta

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

o per farli tutti:

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

ma cosa succede se non so quali attributi quell'elemento web può avere? – LoveLovelyJava

+0

modificato per includere il metodo generico per ottenere tutti gli argomenti - dovrebbe restituire un elenco. – tdrury

+0

in qualsiasi modo non posso usare jacascript? – LoveLovelyJava

17

Se si desidera che il codice HTML dell'elemento stesso, è possibile utilizzare

webElement.getAttribute("outerHTML"); 

Si restituirà il codice HTML dell'elemento stesso, più tutti i bambini elementi. Non sono sicuro che sia esattamente quello che vuoi. Non penso che ci sia un modo per ottenere solo l'HTML dell'elemento selezionato.

2

Prova .getAttribute("innerHTML"); funzione per estrarre fonte in forma di stringa

codice Esempio:

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

Se abbiamo questo:

<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> 

e abbiamo bisogno di ottenere tutti gli attributi di "a" che sarà questo:

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

Possiamo usare questo codice:

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

dove webElement è "a".

O più precisamente:

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

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

Perchè sulla terra ha ottenuto che -1 ??? Io stesso ho postato questa domanda e questa è la risposta perfetta che ho trovato per questo – LoveLovelyJava

1

Si può leggere l'attributo innerHTML per ottenere fonte del contenuto dell'elemento o outerHTML per la fonte con l'elemento corrente.

Esempio: - Ora supponiamo vostro elemento è come sotto

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

elemento interno di uscita

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

elemento esterno uscita

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

diretta Esempio: -

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

Di seguito è possibile trovare la sintassi che richiede il binding diverso. Modificare innerHTML a outerHTML come richiesto.

Python:

element.get_attribute('innerHTML') 

Java:

elem.getAttribute("innerHTML"); 

C#:

element.GetAttribute("innerHTML"); 

Rubino:

element.attribute("innerHTML") 

JS:

element.getAttribute('innerHTML'); 

Se vuoi tutta uso pagina HTML sottostante Codice: -

driver.getPageSource(); 
Problemi correlati