Selenium的.text只是给出了空白行

时间:2017-12-04 02:29:57

标签: python-3.x selenium

我有这个:

....
events = driver.find_elements_by_class_name("textblock")
for event in events:
    content = event.text
    print(content)
print(events)

这是元素,有多个。每个都有不同的文字:

<div class="textblock">example text</div>

这是输出:

# one blank line for every item in list below...

# items below have been striped
[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="", element="")>, <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="", element="")> # and so on...

正如您所看到的,我不是div中的文字,而是获得空白行。那是为什么?

2 个答案:

答案 0 :(得分:2)

Selenium只会返回可见文字。因此,如果此div以任何方式隐藏,或被另一个元素阻挡,它将返回一个空字符串,因为它不可见。如果您仍然需要文本,即使它不可见,请使用javascript:

events = driver.find_elements_by_class_name("textblock")
for event in events:
    content = driver.execute_script('return arguments[0].textContent;', event)
    print(content)
print(events)

答案 1 :(得分:0)

根据您共享的HTML,您的代码块看起来不错。不过我建议你稍微细化一下,而不是使用.text方法,我们可以使用 get_attribute("innerHTML") 方法,如下所示:

....
events = driver.find_elements_by_class_name("textblock")
for event in events:
    content = event.get_attribute("innerHTML")
    print(content)
print(events)