41

I am trying to get the tag text content in html page by using Selenium methods, but it seems method someElement.getText() is not available in Python. Any help, please?

Here's traceback:

AttributeError: 'WebElement' object has no attribute 'getText'
Alex
  • 3,001
  • 6
  • 32
  • 48

4 Answers4

83

Once you locate the element you can use the text property.

Example:

for element in self.driver.find_elements_by_tag_name('img'):
       print element.text
       print element.tag_name
       print element.parent
       print element.location
       print element.size
aberna
  • 5,284
  • 2
  • 27
  • 33
  • 14
    Yes! Thank you. I found `element.get_attribute('text')` works too and it with more possibilities. – Alex Jan 19 '15 at 11:01
  • 13
    You need to be careful if the text is hidden, e.g. via CSS, on the page. In that case you need to do element.get_attribute("innerText"). See: http://yizeng.me/2014/04/08/get-text-from-hidden-elements-using-selenium-webdriver/ – Dave Potts Oct 11 '17 at 15:57
  • This reply even tough expanding on a different subject finally clarified the different objects returned by find_element and find_elements (with the plural s) : – Robert Alexander Jan 26 '22 at 16:27
6

Selenium Get Text From Element (just add ".text")

1

for all elements of the list

tree = browser.find_elements_by_xpath(<the_XPATH>)
for i in tree:
   print(i.text) 

2

[ ] fetchby number

 tree = browser.find_elements_by_xpath(<the_XPATH>)
 print(tree[0].text) 
0

I was in task to extract text between the target tags but the x.text method didn't work for me. This is because some text are saved as invisible elements .For invisible elements use:

list1 = [x.get_attribute("innertext") for x in driver.find_element_by_xpath(xpath)]
print(list1)
Aswin Babu
  • 138
  • 1
  • 7
0

Actually with python 3 this worked for me:

obj= browser.find_element_by_xpath("the_XPATH")
print(obj.text)

Is not necesary iterate the element because launch a Traceback:

TypeError: 'WebElement' object is not iterable
aKratos
  • 171
  • 10