由于webdriver spec的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素的文本总是会返回空字符串。
可是,在某些情况下,我们需要获取隐藏元素的文本。这些内容可以使用selenium 自带的方法:element.attribute('attributeName')以及element.text属性获取标签内容。或者 通过JS提供的textContent, innerText, innerHTML等属性获取。
innerHTML
会返回元素的内部 HTML, 包含所有的HTML标签。
例如,
Hello
World!
的
innerHTML
会得到
Hello
World!
textContent
和innerText
只会得到文本内容,而不会包含 HTML 标签。
textContent
是 W3C 兼容的文字内容属性,但是 IE 不支持innerText
不是 W3C DOM 的指定内容,FireFox不支持
示例
from selenium import webdriver DEMO_PAGE = '''data:text/html,
Demo page for how to get text from hidden elements using Selenium WebDriver.
Demo div
with a hidden paragraph inside.
''' driver = webdriver.PhantomJS()driver.get(DEMO_PAGE) demo_div = driver.find_element_by_id("demo-div") print demo_div.get_attribute('innerHTML')print driver.execute_script("return arguments[0].innerHTML", demo_div) print demo_div.get_attribute('textContent')print driver.execute_script("return arguments[0].textContent", demo_div) driver.quit
输出
Demo div <p style="display:none">with a hidden paragraph inside.p><hr><br>Demo div <p style="display:none">with a hidden paragraph inside.p><hr><br> Demo div with a hidden paragraph inside.Demo div with a hidden paragraph inside.