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 相关文章推荐
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
解决js正则匹配换行问题实现代码
Dec 10 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
JavaScript代码生成PDF文件的方法
Feb 26 Javascript
iScroll.js 使用方法参考
May 16 Javascript
AngularJS实现星星等级评分功能
Sep 24 Javascript
JavaScript原生数组Array常用方法
Apr 06 Javascript
js时间查询插件使用详解
Apr 07 Javascript
利用JS测试目标网站的打开响应速度
Dec 01 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
JS匿名函数内部this指向问题详析
May 10 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跨时区(UTC时间)应用解决方案
2013/01/11 PHP
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
Safari5中alert的无限循环BUG
2011/04/07 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
Python中six模块基础用法
2019/12/08 Python
使用python模拟高斯分布例子
2019/12/09 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
python模拟实现分发扑克牌
2020/04/22 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
python简单实现插入排序实例代码
2020/12/16 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
安全生产实施方案
2014/02/23 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis