I'm getting text inside specific element using selenium. It sometimes prints texts and sometimes empty string. But it always shows texts in pdb.
I tried .text
, .get_attribute('innerText')
, .get_attribute('textContent')
using get_elements_by_class_name
, get_element_by_css_selector
and xpath as well
Same result. Always perfect in pdb but in print()
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome('chromedriver', options=options)
driver.implicitly_wait(4)
driver.get('some url')
no = driver.find_element_by_css_selector('span.hashtag + span')
span = driver.find_elements_by_class_name('live-label-draw')[0].find_element_by_css_selector('span:last-child')
parent = driver.find_elements_by_class_name('live-label-draw')[0]
print(parent.text)
print('-------by class name', span.text, span.get_attribute('innerText'), span.get_attribute('textContent'))
print('-------by css', no.tag_name, no.get_attribute('textContent'), no.get_attribute('innerText'), no.text)
import pdb; pdb.set_trace()
--Insdie pdb--
no.text, no.get_attribute('innerText'), span.text, span.get_attribute('innrText') all prints 31907040069
Also parent.text prints #31907040069
<span class="live-label-draw">
<span class="hashtag">#</span>
<span>31907040069</span> <--- trying to get '31907040069'
</span>
expected:
#31907040069
------by class name 31907040069 31907040069 31907040069
------by css 31907040069 31907040069 31907040069
actual results:
#
------by class
------by css
I just needed explicit waits using WebDriverWait().until
until the element is visible.
That was why it worked in pdb, because it stops and wait automatically.