2014-03-06 11 views
5

ich den Text von Etikett zugreifen möge, aber weder get_text() noch text Eigenschaft arbeitet für das folgende HTML:get_text() oder Text-Eigenschaft funktioniert nicht für Etiketten

<label class="checkbox"> 
<input type="checkbox" value="BATSMC"> 
BATS Multicast PITCH 
</label> 

Zum Beispiel, hier mag ich Erhalten Sie den Wert: BATS Multicast PITCH.

In Selen-Python-Code:

print e.text 

schenken Leerzeichen und get_text() gibt den folgenden Fehler:

AttributeError: 'WebElement' object has no attribute 'get_text' 

Ich erhalte das richtige Web-Element und bin in der Lage andere Eigenschaften zugreifen wie Größe, Standort, Eltern usw. Ich erwartete "Text" zu arbeiten. Kann jemand helfen?

Antwort

5

Der Tag <label> im obigen HTML hat kein Textattribut.

Wenn Sie die Zeichenfolge BATS Multicast PITCH abrufen möchten, müssen Sie sie stattdessen vom Tag <input> abrufen. Beispielsweise wird der folgende Code diese Zeichenfolge drucken:

e = driver.find_element_by_tag_name('input') 
print e.text 

Wenn Sie die gesamte innere HTML des <label> Tages abgerufen werden sollen, dann kann man verwenden:

e = driver.find_element_by_tag_name('label') 
print e.get_attribute('innerHTML') 

Dies druckt "<input type="checkbox" value="BATSMC">BATS Multicast PITCH .

Natürlich haben Sie wahrscheinlich andere <label> und <input> Tags in HTML, so dass Sie eine andere Methode (außer find_element_by_tag_name) zu verwenden, um benötigen diese spezifischen Elemente zu finden.

BTW, ich habe gerade bemerkt, dass der <input> Tag in der HTML oben nicht richtig geschlossen ...

+0

gibt auch "leere" Werte. Yaa, ist nicht geschlossen und ist so. Irgendwelche anderen Lösungen? –

+0

Haben Sie 'get_attribute ('innerHTML')' für beide Elemente versucht? –

+0

get_attribute ('innerHTML') arbeitete für

0

Versuchen Sie das innerText Attribut nur den Text im Label-Tag zu erhalten.

e = driver.find_element_by_tag_name('label') 
print e.get_attribute('innerText') 
+0

Es ergab sich "None". –

Verwandte Themen