【发布时间】:2015-08-30 21:09:54
【问题描述】:
我对使用 Selenium 获取文本感到非常困惑。
有span 标签,里面有一些文字。当我使用driver.find_element_by_... 搜索它们时,一切正常。
但问题是无法从中获取文本。
找到了span标签,因为我不能使用.get_attribute('outerHTML')命令,我可以看到这个:
<span class="branding">ThrivingHealthy</span>
但如果我将.get_attribute('outerHTML') 更改为.text,它会返回不正确的空文本,如上所示。
这是示例(输出是字典的片段):
display_site = element.find_element_by_css_selector('span.branding').get_attribute('outerHTML')
'display_site': u'<span class="branding">ThrivingHealthy</span>'
display_site = element.find_element_by_css_selector('span.branding').text
'display_site': u''
您可以清楚地看到,有一个文本,但它没有找到它。有什么问题?
编辑:我找到了一种解决方法。我刚刚将.text 更改为.get_attribute('innerText')
但我还是很好奇为什么会这样?
【问题讨论】:
-
由于我是 Selenium 的新手,我不想突然发布答案。您能否提供一个正确的 URL 来测试我的尝试?我认为,
find_element_by_class_name('branding').text可以胜任。 -
我认为这无济于事,因为标签已正确找到,那是因为我附加了 .get_attribute('outerHTML')。但当然 - altpress.com/aptv/video/…
-
driver.get('altpress.com/aptv/video/…) print driver.find_element_by_css_selector('span.branding').get_attribute('outerHTML') 返回 StarFluff 所以肯定找到了元素跨度。所以将 get_attribute... 更改为 .text 应该可以,但它不会...
-
从第一个
<span>标签中取出文本StartFluff不是问题:for e in driver.find_elements_by_class_name('branding'): print(e.text) -
display_site = element.find_element_by_css_selector('span.branding').get_attribute('innerHTML')工作吗?
标签: python selenium text selenium-webdriver