本文翻译自:
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(), '文本内容')]` 表示匹配任意元素中包含指定文本内容的元素。您只需要将 `文本内容` 替换为您要定位的文本即可。