2012-04-20 16 views
43

Devo pensare a questo errore.Come posso ottenere il contenuto corrente di un elemento nel webdriver

voglio ottenere il contenuto di un elemento, in questo caso un formfield, in una pagina che io sono l'accesso con WebDriver/Selenio 2

Ecco il mio codice rotto:

Element=driver.find_element_by_id(ElementID) 
print Element 
print Element.text 

qui è il risultato:

<selenium.webdriver.remote.webelement.WebElement object at 0x9c2392c> 

(notare la riga vuota) so che elemento ha un contenuto dato che ho appena li farcite in là con il comando precedente utilizzando .Sendkeys e posso vederli sulla pagina web attuale mentre lo script è in esecuzione.

ma ho bisogno di recuperare il contenuto nei dati.

Cosa posso fare per leggere questo? Preferibilmente in modo generico in modo da poter estrarre contenuti da vari tipi di elementi.

+3

che tipo di elemento è? Se si tratta di un elemento di input, è necessario l'attributo "valore" anziché il testo – prestomanifesto

+0

Ah, il valore potrebbe essere la soluzione. Ci proverò. –

risposta

50

Credo che il prestomanifesto fosse sulla strada giusta. Dipende dal tipo di elemento che è. È necessario utilizzare element.get_attribute('value') per gli elementi di input e element.text per restituire il nodo di testo di un elemento.

È possibile controllare l'oggetto WebElement con element.tag_name per individuare il tipo di elemento e restituire il valore appropriato.

Questo dovrebbe aiutare a capire:

driver = webdriver.Firefox() 
driver.get('http://www.w3c.org') 
element = driver.find_element_by_name('q') 
element.send_keys('hi mom') 

element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print element 
print 'element.text: {0}'.format(element_text) 
print 'element.get_attribute(\'value\'): {0}'.format(element_attribute_value) 
driver.quit() 
+0

Grazie .. Ho eseguito la scansione del sito Web per questa risposta per ore !! –

+0

@KehlinSwain Felice di aiutare :) – Isaac

+0

Questo stesso metodo funziona se ci sono più classi in una riga e vuoi ottenere il testo di ogni classe in quella riga? –

-5

In Java è Webelement.getText(). Non sono sicuro di Python.

+2

Il tag domanda implica che si tratta di 'python' – Leva7

3
element.get_attribute('innerHTML') 
0

La mia risposta si basa su questa risposta: How can I get the current contents of an element in webdriver proprio più come copia-incolla.

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://www.w3c.org') 
element = driver.find_element_by_name('q') 
element.send_keys('hi mom') 

element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print (element) 
print ('element.text: {0}'.format(element_text)) 
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value)) 


element = driver.find_element_by_css_selector('.description.expand_description > p') 
element_text = element.text 
element_attribute_value = element.get_attribute('value') 

print (element) 
print ('element.text: {0}'.format(element_text)) 
print ('element.get_attribute(\'value\'): {0}'.format(element_attribute_value)) 
driver.quit() 
Problemi correlati