我有这个:
....
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
中的文字,而是获得空白行。那是为什么?
答案 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)