前言

首先 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文本的更多相关文章

  1. robot framework 如何获取隐藏元素的文本,以及可见元素的文本

    1.下图是获取可见元素的文本内容,运行后得到:${B_name}=公告管理:假设公告管理不可见,那么${B_name}=‘’(为空)

  2. [SoapUI]怎样获取隐藏元素的文本内容Get text of hidden element

    隐藏元素无法通过gettext()获取其文本内容,须用javascript来获取 String actualDataPointName = (String) ((JavascriptExecutor) ...

  3. selenium+python自动化101-使用execute_script() 方法获取 JavaScript 返回值

    前言 之前经常使用 execute_script() 方法执行 JavaScript 的来解决页面上一些 selenium 无法操作的元素,但是一直无法获取执行的返回值. 最近翻文档,发现 execu ...

  4. selenium+python自动化79-文件下载(SendKeys)

    前言 文件下载时候会弹出一个下载选项框,这个弹框是定位不到的,有些元素注定定位不到也没关系,就当没有鼠标,我们可以通过键盘的快捷键完成操作. SendKeys库是专业的处理键盘事件的,所以这里需要用S ...

  5. js获取隐藏元素宽高的方法

    网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...

  6. [jQuery]无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案

    在做茶城网改版工作的时候,又遇到一个新问题,我需要用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢 ...

  7. selenium+python自动化98--文件下载弹窗处理(PyKeyboard)

    前言 在web自动化下载操作时,有时候会弹出下载框,这种下载框不属于web的页面,是没办法去定位的(有些同学一说到点击,脑袋里面就是定位!定位!定位!) 有时候我们并不是非要去定位到这个按钮再去点击, ...

  8. jQuery无法获取隐藏元素(display:none)宽度(width)和高度(height)的新解决方案

    用jQuery写一个通过点击左右图标来翻阅图片的小插件,写好后测试可以正常运行,但是放到Tab中后发现只有第一个Tab中的代码能够正常运行,其它全部罢工了. 用Chrome自带的开发工具一查,发现罢工 ...

  9. 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 ...

随机推荐

  1. 2022年写的香橙派 OrangePi Zero 用python获取dht11温度和湿度

    感谢网上资料和个人的不放弃,终于方便的解决了香橙派 OrangePi Zero用python获取dht11温湿度的问题. 网上关于香橙派的资料比起树莓派真是少之又少,现在香橙派zero能干的活暂时也只 ...

  2. HTTPS加密证书(1)

    目录 一:HTTPS 1.HTTPS简介 二:模拟网站劫持 1.正常的页面(web01) 2.文件增加权限 3.编写文件网址配置 4.网址测试 三:安装鲨鱼鳍(抓取数据包) 四:(网站劫持)lb代理 ...

  3. zabbix-mongodb监控脚本(高性能、低占用)

    Zabbix调用脚本以实现对MongoDB的监控! 本脚本支持对服务存活状态.副本集.性能指标共计25个监控项! 使用mongostat和"echo rs.status()["me ...

  4. Pycharm新建文件时头部模板的配置方法

    方法

  5. jsp 4-14 知识总结

    二   string类型 装换 boolean 的方法? 三   attribute对象  set 和 get  的用法 四  jsp 的四种属性范围? 五  jsp  <%  %>  和 ...

  6. Visual Studio 2010 怎么查看函数的重载数量、范围、种类等

    将光标放置在()括号内,然后按ctrl + shift + 空格 ,这样就会显示出具体的重载数量与种类,按上键或下键就可以翻看了:

  7. 使用Maven导入MySQL驱动包遇到的问题

    问题描述 今天在使用Maven导入MySQL数据库驱动包依赖后,直接运行项目,出现错误. java.sql.SQLException: No suitable driver found for jdb ...

  8. UIKit绘图演练

    一般使用UIKit给我们提供的绘图来绘制一些文字,图片这些东西.     UIKit给我们提供画图的方法底层也是分为四步.所以也必须在drawRect方法当中去写.     1.如何画文字?      ...

  9. Java8 Stream 的一些操作和介绍

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11858186.html Java8 Stream 是一个新的东西, 就是能够将常见的数据结构转 ...

  10. 汉明码、海明校验码(Hamming Code)

    目录 基础知识 汉明码/海明校验码 计算 基础知识 码距:又叫海明距离,是在信息编码中,两个编码之间对应位上编码不同的位数.例如编码100110和010101,第1.2.5.6位都不相同,所以这两个编 ...