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 相关文章推荐
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
返回上一页并自动刷新的JavaScript代码
Feb 19 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
Aug 05 Javascript
js闭包实现按秒计数
Apr 23 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
js实现多图左右切换功能
Aug 04 Javascript
Node.js学习入门
Jan 03 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 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
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
php下Memcached入门实例解析
2015/01/05 PHP
PHP时间和日期函数详解
2015/05/08 PHP
PHP异常处理Exception类
2015/12/11 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
js实现交通灯效果
2017/01/13 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
简单介绍Python中的JSON模块
2015/04/08 Python
python中while循环语句用法简单实例
2015/05/07 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
python打开文件的方式有哪些
2020/06/29 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
锐步香港官方网上商店:Reebok香港
2020/11/05 全球购物
介绍一下write命令
2012/09/24 面试题
迎新晚会主持词
2014/03/24 职场文书