Selenium - 无法从span元素中获取文本

时间:2015-08-30 21:09:55

标签: python selenium text selenium-webdriver

使用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')

但我仍然很好奇为什么会这样运作?

1 个答案:

答案 0 :(得分:0)

问题是使用span.branding提取了很多标记。当我使用find_elements(复数)查询该页面时,它返回了20个标签。每个标签似乎都加倍了...我不确定为什么,但我的猜测是一组被隐藏而另一组是可见的。据我所知,这对中的第一个是隐藏的。这可能就是为什么你无法从中提取文字的原因。 Selenium的设计是不与用户可以与之交互的元素进行交互。这可能是你可以获得元素的原因,但是当你尝试提取文本时,它并不起作用。最好的办法是用find_elements拉出整个集合,然后循环遍历获取文本的集合。你将像20一样循环,只从10获取文本,但看起来你仍然可以获得整个集合。这很奇怪,但应该有效。