本文翻译自: http://yizeng.me/2014/04/08/get-text-from-hidden-elements-using-selenium-webdriver/

由于 webdriver spec 的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素的文本总是会返回空字符串。
可是,在某些情况下,我们需要获取隐藏元素的文本。这些内容可以使用 element.attribute('attributeName') , 通过 textContent , innerText , innerHTML 等属性获取。

  • innerHTML 会返回元素的内部 HTML, 包含所有的HTML标签。
    例如, <div>Hello <p>World!</p></div> innerHTML 会得到 Hello <p>World!</p>
  • textContent innerText 只会得到文本内容,而不会包含 HTML 标签。
    • textContent 是 W3C 兼容的文字内容属性,但是 IE 不支持
    • innerText 不是 W3C DOM 的指定内容,FireFox不支持
require 'selenium-webdriver'
DEMO_PAGE = <<-eos
    data:text/html,
    <p>Demo page for how to get text from hidden elements using Selenium WebDriver.</p>
    <div id='demo-div'>Demo div <p style=''>with a hidden paragraph inside.</p><hr /><br /></div>
driver = Selenium::WebDriver.for :phantomjs
driver.navigate.to(DEMO_PAGE)
demo_div = driver.find_element(:id, 'demo-div')
puts demo_div.attribute('innerHTML')
puts driver.execute_script("return arguments[0].innerHTML", demo_div)
puts demo_div.attribute('textContent')
puts driver.execute_script("return arguments[0].textContent", demo_div)
driver.quit

Csharp

using System;
using OpenQA.Selenium;
using OpenQA.Selenium.PhantomJS;
using OpenQA.Selenium.Support.Extensions;
namespace GetHiddenText {
    internal class Program {
        private const string DEMO_PAGE = @"data:text/html,
            <p>Demo page for how to get text from hidden elements using Selenium WebDriver.</p>
            <div id='demo-div'>Demo div <p style=''>with a hidden paragraph inside.</p><hr /><br /></div>";
        internal static void Main(string[] args) {
            IWebDriver driver = new PhantomJSDriver();
            driver.Navigate().GoToUrl(DEMO_PAGE);
            IWebElement demoDiv = driver.FindElement(By.Id("demo-div"));
            Console.WriteLine(demoDiv.GetAttribute("innerHTML"));
            Console.WriteLine(driver.ExecuteJavaScript<string>("return arguments[0].innerHTML", demoDiv));
            Console.WriteLine(demoDiv.GetAttribute("textContent"));
            Console.WriteLine(driver.ExecuteJavaScript<string>("return arguments[0].textContent", demoDiv));
            driver.Quit();

python

from selenium import webdriver
DEMO_PAGE = '''data:text/html,
    <p>Demo page for how to get text from hidden elements using Selenium WebDriver.</p>
    <div id='demo-div'>Demo div <p style=''>with a hidden paragraph inside.</p><hr /><br /></div>'''
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="">with a hidden paragraph inside.</p><hr><br>
Demo div <p style="">with a hidden paragraph inside.</p><hr><br>
Demo div with a hidden paragraph inside.
Demo div with a hidden paragraph inside.
个人最近开始学习Selenium,但发现对应python的有用的资料奇少无比,于是 自己努力收集并整理了一些资料 学会搭建环境后的同学,建议先抛弃其他一切资料,先看一遍这个python资料,保证收益匪浅,基本上可以动手做测试了 大神们可略过,习惯用python但又苦无资料的同学 可以看看这个
element=driver.find_element(By.XPATH, '//*[@class="el-form-item__error"]')]) 1.element.text 2.get_attribute(“textContent”) 优点:可以获取隐藏元素文本 缺点:IE不支持;获取有些元素文本时,结果带有空字符串;(没有尝试过) 3.get_attribute("innerText") 优点:可以获取隐藏元素文本 缺点:FireFox不支持;(每个博客能搜到的都说这个缺点
由于webdriver spec的定义,Selenium WebDriver 只会与可见元素交互,所以获取隐藏元素文本总是会返回空字符串。  可是,在某些情况下,我们需要获取隐藏元素文本。这些内容可以使用element.attribute('attributeName'), 通过textContent, innerText, innerHTML等属性获取。 innerHTML 会返回元素的内...
定位隐藏要素的原理:页面主要通过“”来控制元素不可见。所以我们需要通过javaScript修改display的值得值为display="block,来实现元素定位的。 HTML代码: <header id="header"> <a href="#" class="logo"><strong id="Title" style="...
第一种 先获取元素通过 属性获取WebElement webElemt= webElement.findElement(By.xpath(“//*[@class=’xxxxxx]/a”)); //在ie下使用innerText 在火狐下使用textContent String linktext = webElemt.getAttribute(“innerText”);第二种 通过js获取WebE
3、clear();     清除文本内容 4、submit();       用于提交表单的内容 。例如搜索框后的“回车”,就可以使用。有时候可以用来替换click() 5、getSize();       返回元素的尺寸,宽、高 6、getText();      返回元 from selenium.webdriver.common.by import By driver.find_element(By.XPATH, "//*[contains(text(), '文本内容')]") 其,`By.XPATH` 表示使用 XPath 定位方式,`//*[contains(text(), '文本内容')]` 表示匹配任意元素包含指定文本内容元素。您只需要将 `文本内容` 替换为您要定位的文本即可。