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 相关文章推荐
Convert Seconds To Hours
Jun 16 Javascript
使用Raygun对Node.js应用进行错误处理的方法
Jun 23 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
Dec 14 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
修改npm全局安装模式的路径方法
May 15 Javascript
vue中使用sessionStorage记住密码功能
Jul 24 Javascript
微信小程序页面间值传递的两种方法
Nov 26 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正则表达式之定界符和原子介绍
2012/10/05 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
[37:29]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.19
2020/11/19 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
全面解读Python Web开发框架Django
2014/06/30 Python
python获取android设备的GPS信息脚本分享
2015/03/06 Python
python实现井字棋游戏
2020/03/30 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
BCBG官网:BCBGMAXAZRIA
2017/12/29 全球购物
2014三八妇女节活动总结
2014/03/01 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
SQL Server中使用表变量和临时表
2022/05/20 SQL Server
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL