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 IE 与 FF中兼容问题小结
Feb 18 Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 Javascript
javascript设计模式--策略模式之输入验证
Nov 27 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
Nov 25 Javascript
js自制图片放大镜功能
Jan 24 Javascript
简单的JS控制button颜色随点击更改的实现方法
Apr 17 Javascript
Vue 表单控件绑定的实现示例
Aug 11 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
Jun 24 Javascript
javascript sort()对数组中的元素进行排序详解
Oct 13 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和ACCESS写聊天室(八)
2006/10/09 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
在Python下尝试多线程编程
2015/04/28 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
判断网页编码的方法python版
2016/08/12 Python
django多对多表的创建,级联删除及手动创建第三张表
2019/07/25 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
Hotels.com中国区:好订网
2016/08/18 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
班级学雷锋活动总结
2014/06/26 职场文书
感谢信怎么写
2015/01/21 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
HTML基本元素标签介绍
2022/02/28 HTML / CSS
pnpm对npm及yarn降维打击详解
2022/08/05 Javascript
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS