python数据库execute返回值_selenium+python自动化101-使用execute_script() 方法获取 JavaScript 返回值...
前言
之前经常使用 execute_script() 方法执行 JavaScript 的来解决页面上一些 selenium 无法操作的元素,但是一直无法获取执行的返回值。
最近翻文档,发现 execute_script 是可以拿到 JavaScript 执行后的返回值的
演示案例
目标元素元素属性
博客园
我们可以在浏览器 Console 执行 JavaScript 获取到元素的文本属性值
document.getElementById("blog_nav_sitehome").innerText;
但是在代码里面执行的时候,却拿不到返回值
from selenium import webdriver
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang/")
# 定位博客首页 "博客园" 按钮
# 博客园
js_blog = 'document.getElementById("blog_nav_sitehome").innerText;'
blog = driver.execute_script(js_blog)
print(blog)
运行后结果返回 None,之前一直没找到解决办法,最近翻文档发现需在 JavaScript 脚本前面加 return 即可解决
return 返回值
在 JavaScript 脚本前面加 return 获取返回值,修改后如下
from selenium import webdriver
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang/")
# 定位博客首页 "博客园" 按钮
# 博客园
js_blog = 'return document.getElementById("blog_nav_sitehome").innerText;'
blog = driver.execute_script(js_blog)
print(blog)
再次执行就能得到结果:博客园
返回 JavaScript 元素对象
JavaScript 定位到的元素对象也能返回给 selenium, 拿到元素对象后也可以继续操作
from selenium import webdriver
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang/")
# 定位博客首页 "博客园" 按钮
# 博客园
js_blog = 'return document.getElementById("blog_nav_sitehome");'
blog = driver.execute_script(js_blog)
print(blog) # 返回元素对象
# 获取元素属性
t = blog.text
print(t)
# 获取元素 href 属性
link = blog.get_attribute("href")
print(link)
# 点击元素
blog.click()
运行后结果:
博客园
https://www.cnblogs.com/
jquery 使用
上面的 JavaScript 方法同样适用于 jquery 定位元素和操作元素
from selenium import webdriver
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
driver = webdriver.Chrome()
driver.get("https://www.cnblogs.com/yoyoketang/")
# 定位博客首页 "博客园" 按钮
# 博客园
# js_blog = 'return document.getElementById("blog_nav_sitehome");'
# jquery 也适用
jq_blog = "return $('#blog_nav_sitehome')[0];"
blog = driver.execute_script(jq_blog)
print(blog) # 返回元素对象
# 获取元素属性
t = blog.text
print(t)
# 获取元素 href 属性
link = blog.get_attribute("href")
print(link)
# 点击元素
blog.click()
运行后结果:
博客园
https://www.cnblogs.com/
需要注意的是 jquery 并不是适用所有的 web 网页,需页面有加载 jquery 的 js 文件
python数据库execute返回值_selenium+python自动化101-使用execute_script() 方法获取 JavaScript 返回值...相关推荐
- python 数据库 实战_干货!python与MySQL数据库的交互实战
鼠年大吉 HAPPY 2020'S NEW YEAR 1 安装pymysql库 如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个 库的安装很简单,直接使用pip i ...
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
实例1.取得MYSQL版本 # -*- coding: UTF-8 -*- #安装MYSQL DB for python import MySQLdb as mdb con = None try:#连 ...
- python中prompt的意思_selenium+Python(alert 、confirm 、prompt 的处理)
alert\confirm\prompt 弹出框操作主要方法有: text 返回 alert/confirm/prompt 中的文字信息 accept 点击确认按钮 dismiss 点击取消按钮,如果 ...
- 【Android】TypedArray——三个方法获取dimen返回值的类型
三个方法:getDimension().getDimensionPixelOffset().getDimensionPixelSize() 方法名 返回值类型 getDimension() 是后两个方 ...
- jquery取值,赋值,以及下拉框获取选中value值
太长时间不用基础的jquery语法,该忘的,不该忘的,都忘的差不多了.这里重新拾起一些简单的jquery知识. 一.jquery获取元素的值 (1)通过name属性获取元素的value值 //假如是获 ...
- python手机连续点击脚本_selenium+python自动化86-循环点击遇到的坑
selenium定位一组元素,批量操作循环点击的时候会报错:Element not found in the cache - perhaps the page has changed since it ...
- python的selenium自动化测试公路_selenium+python自动化测试
F12: 右键 选择复制 path from selenium import webdriver import time driver = webdriver.Chrome() driver.g ...
- python自动登录qq邮箱_selenium+python实现自动登陆QQ邮箱并发送邮件功能
本期做一个selenium详细实例,会把我在元素定位中遇到的一些阻塞和经验分享给大家. (浏览器为Chrome) (如果只需要最终的完整代码,请直接跳转到文章最后) 浏览器打开QQ邮箱登录网址 fro ...
- python数据库分层设计_基于Python的高中教学数据库设计
文章对 Python 进行概述,并 对数据库的操作模式进行分析, 对数据库系统编译平台的目标指 令介绍,并对高中教学数据库的 设计进行研究. 摘 要 1 Python概述 计算机程序设计语言( Pyt ...
最新文章
- sqlserver 字段中只有年月 加上中文年月_PowerBI 10月更新,全新图标正式亮相
- 2013.10u-boot移植之SD保存环境变量
- 数字签名与HTTPS详解
- lcd屏幕抖动_电视屏幕面板大科普!买电视之前必看!
- ssrs 生成pdf_在SSRS报告中生成热图的可用选项
- mysql实训报告_MySQL实验报告
- oracle11g是什么语言,oracle11g下载
- NFC Reader Tool 蓝牙NFC读写器使用教学
- DbgView远程调试
- 中通2008通信概预算编制系统简介
- p750服务器配置信息,P750的一些配置
- 拥有多丽体质特膳 你也能和女神般光彩照人
- 网吧用计算机性能配件清单,网吧组装电脑配置清单
- c语言游戏菜单栏界面设计,俄罗斯方块——菜单和游戏界面.cpp
- 201771010137 赵栋《面向对象程序设计(java)》第十六周学习总结
- mysql 递归 性能_MySQL优化总结+自定义函数之递归
- gunicorn + Flask架构中使用多进程全局锁
- VC6代码移植VS2008的SDK总结,包括OPENGL和DireX还有Cimage 【总结】
- redist 在linux上的安装教程
- Win7上通过DckerToolbox部署OnlyOffice
热门文章
- SAP WebIDE登录时,有时会发生超时现象
- 新浪微博和SAP CRM Interaction Center(呼叫中心)的集成
- SAP UI5 why failed to load 'sap/cus/crm/lib/reuse/library.js' from resources/sap/cus/crm
- footer bar in SAP Fiori as a service
- SAP OData schema version and backend version
- Provisional headers are shown in Chrome network tab
- cross component navigation in HCP
- 利用ABAP调试器脚本修改数据库表的值
- Cannot find source code based button in SE24
- Database specific hint in One order search