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的函数重名看其初始化方式
Mar 08 Javascript
我见过最全的个人js加解密功能页面
Dec 12 Javascript
Jquery之美中不足小结
Feb 16 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
JS正则表达式常见用法实例详解
Jun 19 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 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中文汉字验证码
2007/04/08 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
Jquery基础教程之DOM操作
2015/08/19 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python的几种开发工具介绍
2007/03/07 Python
selenium+python实现自动登录脚本
2018/04/22 Python
Python 判断奇数偶数的方法
2018/12/20 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
基于Keras中Conv1D和Conv2D的区别说明
2020/06/19 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
学校欢迎标语
2014/06/18 职场文书
大学生入党自我鉴定范文
2019/06/21 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript