selenium执行js脚本

article/2025/9/24 10:16:51

说明:本篇博客基于selenium 4.1.0

JavaScript是运行在客户端(浏览器)和服务器端的脚本语言,允许将静态网页转换为交互式网页。可以通过 Python Selenium WebDriver 执行 JavaScript 语句,在Web页面中进行js交互。那么js能做的事,Selenium应该大部分也能做。WebDriver是模拟终端用户的交互,所以就不能点击不可见的元素,有时可见元素也不能点击。在这些情况下,我们就可以通过WebDriver 执行JavaScript来点击或者执行页面元素。本文将介绍如何使用WebDriver执行JavaScript语句。

Web元素定位及操作
使用execute_script() 执行 JavaScript 代码,有两种方法实现元素操作

方法1:文档级别操作
直接使用JavaScript实现元素定位和动作执行,主要方法有:

document.getElementById
document.getElementsByClassName
document.getElementsByName
document.getElementsByTagName
document.getElementsByTagNameNS

测试示例:

打开百度一下
输入框输入”test“
点击百度一下
python代码:

def test_baidu(self):self.driver.get("http://www.baidu.com")self.driver.execute_script('document.getElementById("kw").value = "test"')time.sleep(2)self.driver.execute_script('document.getElementById("su").click()')time.sleep(2)

在执行过程中,WebDriver 将 JavaScript 语句注入到浏览器中,然后脚本将执行。这个注入 JavaScript 有自己的名称空间,不会干扰实际网页中的 JavaScript运行。

方法2:元素级别操作
可以先使用WebDriver获取想要操作的元素,然后使用JavaScript执行操作。

input_ele = driver.find_element_by_id("su") 
driver.execute_script("arguments[0].click();", input_ele)
python代码:def test_baidu2(self):self.driver.get("http://www.baidu.com")input_ele = self.driver.find_element_by_id("kw")self.driver.execute_script("arguments[0].value = 'test';", input_ele)time.sleep(2)baidu_ele = self.driver.find_element_by_id("su")self.driver.execute_script("arguments[0].click();", baidu_ele)time.sleep(2)

可以在语句中使用多个 JavaScript动作:

username = driver.find_element_by_xpath("//*[@id='username']")
password = driver.find_element_by_xpath("//*[@id='password']")
driver.execute_script("arguments[0].value = 'admin';arguments[1].value = 'admin';", username, password)

获取返回值
可以返回JavaScript的执行结果:

driver.execute_script("return document.getElementById('kw').value")
driver.execute_script("return document.title;")  # 返回网页标题
滑动
在Web自动化测试 | ActionChains、TouchAction 中介绍了TouchAction类中scroll_from_element()也可以滑动页面。滑动到浏览器底部
document.documentElement.scrollTop=10000
window.scrollTo(0, document.body.scrollHeight)
滑动到浏览器顶部
document.documentElement.scrollTop=0
window.scrollTo(document.body.scrollHeight,0)

更改元素属性
大部分时间控件都是 readonly属性,需要手动去选择对应的时间。自动化测试中,可以使用JavaScript代码取消readonly属性。

测试页面:https://www.12306.cn/index/

在这里插入图片描述

测试步骤:

打开测试页面
修改出发日期
断言日期是否修改成功
python测试代码:

def test_datettime(self):self.driver.get("https://www.12306.cn/index/")# 取消readonly属性self.driver.execute_script("dat=document.getElementById('train_date'); dat.removeAttribute('readonly')")   self.driver.execute_script("document.getElementById('train_date').value='2020-10-01'")time.sleep(3)now_time = self.driver.execute_script("return document.getElementById('train_date').value")assert '2020-10-01' == now_time

总结
Selenium WebDriver 执行 JavaScript代码是一个非常强大的功能,可以实现WebElement 接口所有功能,甚至更多的功能。比如在web性能测试中可以调用Web API接口window.performance来测试Web性能。

更多技术文章


http://chatgpt.dhexx.cn/article/XuRif9G4.shtml

相关文章

Auto.js脚本编写教程 (一)

一、工具下载安装 手机端:auto.js(百度即可) PC端: VS Code JDK SDK Tools(定位工具: Uiautomatorviewer) 注: VS Code 用于代码编写 Uiautomatorviewer用于元素定位,也…

好用的 JS 脚本

文章目录 🚜3D 可视化🚚ThingJS💡特点💡案例 🚜拖拽库🚚SortableJS💡特点💡案例 🚜3D 可视化 🚚ThingJS 物联网 3D 可视化 PaaS 平台 官网:https…

JavaScript 【基础】 浏览器执行脚本

步骤 一: 在浏览器指定界面按下F12二:找到输入代码的地方三:输入js代码 平时我们做开发的,或者想使用一些外挂,脚本来实现界面的一些更改之类的操作,可以直接在浏览器上面进行。 一: 在浏览器指…

各种JS脚本该怎么使用呢?以城城为例,教程在这里自行食用。

1、首先先下载XXX.js结尾的 链接:https://pan.baidu.com/s/17sXHe_l7eHsUgeHtYRmkHg 提取码:jdck 2、然后用FinalShell工具连接搭建青龙的服务器,把文件上传到青龙面板的这个路径内 每个人搭建的方式不一样我的是这个路径 /root/QL/scripts…

运行JS脚本的几种方式

如何运行JS脚本 直接运行 下载nodejs, 使用node *.js即可执行,方便快捷 如果*.js文件中有引入的第三方模块,需要先下载第三方模块 注意要使用require导入而不是import, import是ES6语法, 较新, 可能会导致js无法运行 初始化pac…

如何在浏览器中执行js脚本

方式1:F12打开调试工具,利用控制台运行JS脚本 方式2: Chrome snippets 小脚本 我们也可以在 Chrome 浏览器中创建一个脚本来执行,在开发者工具中点击 Sources 面板,选择 Snippets 选项卡,在导航器中右击鼠标&#xff…

JavaScript 脚本

一、JavaScript 脚本 Bootstrap 包括一些 JavaScript 帮助用户做出更加充满生机、活动的项目。欢迎学习更多关于如何去调用动态事件、灵活展示的数据和编程性的API选项等。 二、单个引用或者编译 插件可以单独包含(使用Bootstrap的单独js/dist/*.js)&…

JavaScript脚本基础教程

1、JavaScript简单介绍 Javascript(简称js) 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品,最早取名为 LiveScript;为了吸引更多 java 程序…

SAP PP模块后台表关系图

生产主数据关系图 生产业务数据后台数据关系图 更多文章请点击 写于:深圳大鹏 20230717

PaddleClas套件——PP-ShiTuV2模型详解

1. PP-ShiTuV2模型介绍 PP-ShiTuV2 是基于 PP-ShiTuV1 改进的一个实用轻量级通用图像识别系统,由主体检测、特征提取、向量检索三个模块构成,相比 PP-ShiTuV1 具有更高的识别精度、更强的泛化能力以及相近的推理速度*。主要针对训练数据集、特征提取两个…

SAP-PP知识分享-PP常用表积累

原文链接:SAP-PP知识分享-PP常用表积累(建议收藏,以后好找)导读 本篇给大家简单总结一下PP中常见、常用的表集合。 正文 1.需求相关RESB---预定/相关需求MDKhttps://mp.weixin.qq.com/s/s7SlfOOFf5QjK_oZalaujw 大家可以关注我个人…

PP-LCNet论文全文解析

PP-LCNet: A Lightweight CPU Convolutional Neural Network 🔗 PDF Link 🍺 Github Code Section 1 介绍 随着模型参数和FLOPs的加大,模型越来越难以在基于ARM架构的移动端设备或者x86架构的CPU上取得较快的推理速度。虽然有许多优秀的移动…

PP-YOLO论文阅读笔记

PP-YOLO: An effective and efficient implementation of object detector 期刊: arXiv preprint年份:2020 主要内容列举: ① :实现一个有效性和效率相对平衡的对象检测器,可以直接应用于实际应用场景; ② ②:添加了一系列几乎不会增加推断时间的技巧,以…

【paddle】PP飞桨

PP飞桨AI Studio 项目:https://aistudio.baidu.com/aistudio/projectoverview/public 数据集:https://aistudio.baidu.com/aistudio/datasetoverview 课程:https://aistudio.baidu.com/aistudio/course 比赛:https://aistudio.ba…

PP-ShiTu: A Practical Lightweight Image Recognition System

最近看了一个新的分享,关于图像识别的,对于大规模图像搜索以及新物品频繁情况下表现良好。 论文: https://arxiv.org/abs/2111.00775项目: https://github.com/PaddlePaddle/PaddleClas Abstract 近年来,图像识别的…

SAP_PP模块流程

1、SAP_PP模块介绍 PP模块涉及到工程部、财务部、PC、MC、生产部这些业务部门;主要大块在于PMC和生产;是整个SAP的源头所在; 2、整体业务逻辑 工程部:维护物料主数据、收集业务视图、维护BOM、工艺路线、生产版本,这些数据维护…

PP模块学习总结

PP模块总览 生产业务主要包含三部分: 主数据管理(有效 、准确,用来确保查询速度)生产计划安排(满足销售、降低库存)生产制造执行 PP模块数据 定义:是企业运行基本数据,描述业务流…

PP-OCR

论文: PP-OCR: A Practical Ultra Lightweight OCR System Github:https://github.com/PaddlePaddle/PaddleOCR 百度开源的ocr检测识别系统,称为PP-OCR。PP-OCR的中文字符识别模型仅3.5M,支持识别6622个中文字符。英文字符识别模…