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 相关文章推荐
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
Nov 30 Javascript
Javascript模块化编程(一)模块的写法最佳实践
Jan 17 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
Jun 15 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
vuex的module模块用法示例
Nov 12 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 Javascript
vue+canvas实现移动端手写签名
May 21 Javascript
JS原型对象操作实例分析
Jun 06 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
PR值查询 | PageRank 查询
2006/12/20 PHP
PHP简洁函数小结
2011/08/12 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
从零学jquery之如何使用回调函数
2014/05/16 Javascript
Js控制滑轮左右滑动实例
2015/02/13 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
python实现报表自动化详解
2017/11/16 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
Python实现疫情地图可视化
2021/02/05 Python
新护士岗前培训制度
2014/02/02 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
幼儿园六一儿童节演讲稿
2015/03/19 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Django集成富文本编辑器summernote的实现步骤
2021/05/31 Python
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python
SQL Server 中的事务介绍
2022/05/20 SQL Server