Selenium执行Javascript脚本参数及返回值过程详解


Posted in Javascript onApril 01, 2020

在Selenium中可以使用drvier.execute_script()来执行Javascript脚本,支持多行语句。

使用Javascript可以实现以下功能:

  • 移除元素隐藏、禁用、只读等限制属性
  • 为元素添加id或高亮样式
  • 页面滚动
  • 富文本框输入(HTML注入)
  • 获取页面信息

使用Javascript参数

在使用Javascript语句时,还可以动态传入参数或元素对象,Javascript语句中使用占位符“argument[n]”来表示取第几个参数,如:

js = "arguments[0].setAttribute('style', arguments[1]);"

这里埋设了两个参数,一个是元素对象,另一个是样式字符串。

element = driver.find_element_by_id("kw")
style = "background: red; border: 2px solid yellow;"

执行脚本时,按顺序携带参数即可:

driver.execute_script(js, element, style)

获取Javascript返回值

在Javascript语句中加上return字样,如获取页面高度:

js = 'return document.documentElement.scrollHeight;'

执行该后便可以拿到其返回值:

page_height = driver.execute_script(js)

完整示例

import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

js = 'arguments[0].setAttribute("style", arguments[1]);'
element = driver.find_element('id', 'kw')
style = 'background: red; border: 2px solid yellow;'
driver.execute_script(js, element, style)

page_height = driver.execute_script('return document.documentElement.scrollHeight;')
print(page_height)

time.sleep(3)

运行结果如图:

Selenium执行Javascript脚本参数及返回值过程详解

打印结果:

890

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
form+iframe解决跨域上传文件的方法
Nov 18 Javascript
js实现适配不同的屏幕大小
Apr 10 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
js实现多个标题吸顶效果
Jan 08 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 #Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 #Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 #Javascript
Vue-router 报错NavigationDuplicated的解决方法
Mar 31 #Javascript
js实现整体缩放页面适配移动端
Mar 31 #Javascript
react国际化化插件react-i18n-auto使用详解
Mar 31 #Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
Mar 31 #Javascript
You might like
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
win平台安装配置Nginx+php+mysql 环境
2016/01/12 PHP
详谈PHP中的密码安全性Password Hashing
2017/02/04 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
原生JS实现的自动轮播图功能详解
2018/12/28 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
Python带动态参数功能的sqlite工具类
2018/05/26 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python安装本地whl的实例步骤
2019/10/12 Python
python 实现批量图片识别并翻译
2020/11/02 Python
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
教师绩效工资方案
2014/02/01 职场文书
环境卫生倡议书
2014/08/29 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
小学语文教学随笔
2015/08/14 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis