我需要在类“one”中提取文本。 我有以下代码:
h3 = browser.find_element_by_class_name("one")
h3 = h3.text
print(h3)
问题是结果是一个空字符串...似乎没有打印出来。
经过进一步检查,该类中的文本的不透明度为“0”。我假设这是导致问题。我该如何解决这个问题?
答案 0 :(得分:1)
el = browser.find_element_by_class_name("one")
print el.get_attribute('innerHTML')
> Success
WebElement.text知道CSS样式,因此el.text
返回一个空行,而el.get_attribute('innerHTML')
将返回html(在本例中为文本)。
或者,如果要使用.text
属性,可以更改CSS以使文本可见。在这种特殊情况下,不仅是不透明度,还包括您需要修改的包含div
的显示和可见性样式。例如:
browser.execute_script("var a = document.getElementById('result-error').style; a.display = 'block'; a.visibility = 'visible'; a.opacity = 100;")
el = browser.find_element_by_class_name("one")
print el.text
但是.get_attribute('innerHTML')
不那么具有侵入性,并且对于你在这里尝试做的事情也很好。
更新1:
由于我不确切知道您的要求是什么,这里是我的代码,它从https://www.voilanorbert.com/抓取所有带有“one”类的元素,并为每个元素打印innerHTML
:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get('https://www.voilanorbert.com/')
ones = driver.find_elements_by_class_name('one')
for el in ones:
print el.get_attribute('innerHTML')
driver.close()
> Oh man, I broke my ankle
> Nothing found
> Catch-all
> Success
> I'm tired