selenium+python自动化104-如何获取隐藏元素text文本
前言
首先 selenium 是可以定位到隐藏元素的,但是 selenium 不能跟隐藏元素交互,也就是隐藏元素element不能使用element.click()方法。
隐藏元素element.text 虽然不会报错,但获取到的文本是空值
隐藏元素定位
登录之后,获取个人中心的账号内容,在页面上没显示,f12能看到,很明显这是个隐藏元素style="display: none;"

from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:730246532
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("http://49.235.x.xx:8200/users/login/")
time.sleep(3)
# 先登录
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)
# 隐藏元素定位
yoyo = driver.find_element_by_css_selector(".userdetail")
print(yoyo)
# 获取文本
print(yoyo.text)
结果返回
<selenium.webdriver.remote.webelement.WebElement (session="d705909d146a26f88883e7f8c493de9b", element="1bb6cc1f-f205-482e-a0aa-bd7b5e923a9d")>
很明显隐藏元素能定位到,但是获取的文本值是空的(隐藏元素不能交互)
JavaScript 获取隐藏元素文本
selenium 的方法不能操作隐藏元素,但是 JavaScript 是可以直接操作隐藏元素的,先在浏览器上调试
document.querySelector('.userdetail p').innerText

于是可以用 selenium 执行 JavaScript 脚本来获取隐藏元素的 text
from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:730246532
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("http://49.235.x.xx:8200/users/login/")
time.sleep(3)
# 先登录
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)
js = "return document.querySelector('.userdetail p').innerText"
text = driver.execute_script(js)
print(text) # 1234@qq.com
这是通过 JavaScript 的方法获取的,其实也可以通过鼠标操作的方法,鼠标放到元素的位置上,让隐藏元素显示出来,就可以正常操作了。
get_attribute('innerText')
看到评论可以用get_attribute('innerText')获取元素的文本属性,试了下也是可以的
from selenium import webdriver
import time
# 作者-上海悠悠 QQ交流群:730246532
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("http://49.235.x.x:8200/users/login/")
time.sleep(3)
# 先登录
time.sleep(3)
driver.find_element_by_id("username").send_keys("1234@qq.com")
driver.find_element_by_id("password_l").send_keys("123456")
driver.find_element_by_id("jsLoginBtn").click()
time.sleep(2)
# # 方法一
# js = "return document.querySelector('.userdetail p').innerText"
# text = driver.execute_script(js)
# print(text) # 1234@qq.com
# 方法二 get_attribute('innerText')
t = driver.find_element_by_css_selector('.userdetail p').get_attribute('innerText')
print(t)
运行结果:1234@qq.com
selenium+python自动化104-如何获取隐藏元素text文本的更多相关文章
- robot framework 如何获取隐藏元素的文本,以及可见元素的文本
1.下图是获取可见元素的文本内容,运行后得到:${B_name}=公告管理:假设公告管理不可见,那么${B_name}=‘’(为空)
- [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element
隐藏元素无法通过gettext()获取其文本内容,须用javascript来获取 String actualDataPointName = (String) ((JavascriptExecutor) ...
- selenium+python自动化101-使用execute_script() 方法获取 JavaScript 返回值
前言 之前经常使用 execute_script() 方法执行 JavaScript 的来解决页面上一些 selenium 无法操作的元素,但是一直无法获取执行的返回值. 最近翻文档,发现 execu ...
- selenium+python自动化79-文件下载(SendKeys)
前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...
- js获取隐藏元素宽高的方法
网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...
- [jQuery]无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案
在做茶城网改版工作的时候,又遇到一个新问题,我需要用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢 ...
- selenium+python自动化98--文件下载弹窗处理(PyKeyboard)
前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...
- jQuery无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案
用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢工了. 用Chrome自带的开发工具一查,发现罢工 ...
- selenium+python自动化88-批量操作循环点击报错:Element not found in the cache - perhaps the page has changed since it was looked up
前言 selenium定位一组元素,批量操作循环点击的时候会报错:Element not found in the cache - perhaps the page has changed since ...
随机推荐
- zabbix表达式
system.cpu.load[all,avg1].min(10)}>2 load连续10分钟>2 system.cpu.load[percpu,avg1].count(#3,0.6,&q ...
- 洛谷P1002过河卒(60分)
逻辑没问题,运行超时,得分60 写注释了,不多解释 import java.util.Scanner; public class D1 { static int a,b,c,d,con; //棋盘大小 ...
- Shiro 简单介绍和快速入门。
一.shiro是啥? /* * Shiro ? 安全框架是一个 1.功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理,并可用于保护任何应用程序 - 从命令行应用程序,移动应用 ...
- vector概述
vector是一个能够支持任何类型的容器,本身为一个可以动态增长的数组. 1.vector基本数据结构 STL中所有的容器都包括三部分: 迭代器,遍历容器的元素,控制容器空间的边界和元素移动. 构造函 ...
- iptables简单使用
1.安装iptables yum install iptables-services 2.iptables简单使用 iptables防火墙文件路径/etc/sysconfig/iptables sys ...
- 标签显示模式(display)
非洲黑人: 皮肤内黑色素含量高,以吸收阳光中的紫外线,保护皮肤内部结构免遭损害,头发象羊毛一样卷曲,使每根卷发周围都有许多空隙,空隙充满空气,卷发有隔热作用. 欧洲白人: 生活寒带或着是说常年温度较低 ...
- idea的jar文件,“java.lang.SecurityException: Invalid signature file digest for Manifest main attribute
感谢大佬:https://blog.csdn.net/mingyuli/article/details/84674483 命令行运行jar出现问题: 1.找不到主类.打开jar文件包,在MANIFES ...
- @property中的copy关键字
1.@property中的copy的作用 防止外界修改内部的值 @interface Person : NSObject @property (nonatomic, retain) NSString ...
- 无脑安装——Python 及 安装python集成开发环境pycharm
无脑安装--Python 及安装python集成开发环境pycharm 1.真机安装python 2.安装python集成开发环境pycharm Python 是一种解释型语言 Python 是面向对 ...
- Nginx网站服务 配置
Nginx网站服务 配置 1.编译安装Nginx服务 2.认识Nginx服务的主配置文件nginx.conf 3.访问状态统计配置 4.基于授权的访问控制 5.基于客户端的访问控制 6.基于域名的Ng ...
