当前位置: 首页 > news >正文

Python Selenium 执行 JavaScript

简介

Selenium是一个用于自动化浏览器操作的工具,可以模拟人工操作,执行各种浏览器操作,包括点击、输入文字、提交表单等。而JavaScript是一种常用的脚本语言,用于在网页上添加交互性和动态性。在Python中使用Selenium执行JavaScript代码可以为我们提供更大的灵活性和控制能力。

本文将介绍如何在Python中使用Selenium执行JavaScript代码,并给出一些常见的应用示例。

准备工作

在开始之前,我们需要安装Selenium库和对应的浏览器驱动。Selenium支持的浏览器有Chrome、Firefox、Safari等,我们可以根据自己的需要选择相应的浏览器驱动。这里以Chrome浏览器为例,演示如何安装。

  1. 首先,我们需要安装Selenium库。可以使用pip工具进行安装:
pip install selenium
  1. 接下来,我们需要下载Chrome浏览器驱动。可以从官方网站 https://sites.google.com/a/chromium.org/chromedriver/downloads 下载对应版本的驱动,并将其解压到系统路径中,以便Selenium能够找到。

安装完成后,我们就可以开始使用Python Selenium来执行JavaScript代码了。

执行JavaScript代码

在Python中使用Selenium执行JavaScript代码,可以使用execute_script()方法。该方法的参数是要执行的JavaScript代码,可以是一个字符串,也可以是一个已经定义好的JavaScript函数。

下面是一个使用execute_script()方法执行JavaScript代码的示例:

from selenium import webdriver# 创建Chrome浏览器实例
driver = webdriver.Chrome()# 打开百度首页
driver.get("https://www.baidu.com")# 执行JavaScript代码
driver.execute_script("document.querySelector('#kw').value = 'Python Selenium';")# 关闭浏览器
driver.quit()

这段代码会使用Chrome浏览器打开百度首页,并执行JavaScript代码来修改搜索框的值为"Python Selenium"。可以看到,我们可以通过execute_script()方法直接操作DOM元素,实现更多的自定义功能。

JavaScript代码中的返回值

当我们执行JavaScript代码时,有时候需要获取JavaScript代码的执行结果。在Python中,execute_script()方法会返回JavaScript代码的执行结果。

下面是一个获取JavaScript代码执行结果的示例:

from selenium import webdriver# 创建Chrome浏览器实例
driver = webdriver.Chrome()# 打开百度首页
driver.get("https://www.baidu.com")# 执行JavaScript代码,并获取结果
result = driver.execute_script("return document.title;")# 打印结果
print(result)# 关闭浏览器
driver.quit()

这段代码会使用Chrome浏览器打开百度首页,并执行JavaScript代码来获取页面的标题,并将结果打印出来。

应用示例

下面是一些常见的应用示例,展示了如何使用Python Selenium执行JavaScript代码:

1. 模拟点击按钮

有时候,我们需要模拟点击页面上的某个按钮。可以使用JavaScript来实现这个功能。

driver.execute_script("document.querySelector('.btn').click();")

这段代码会模拟点击页面上class为"btn"的按钮。

2. 模拟滚动页面

有时候,我们需要模拟滚动页面到底部。可以使用JavaScript的scrollTo()方法来实现。

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

这段代码会模拟滚动页面到底部。

3. 修改页面元素的样式

有时候,我们需要修改页面元素的样式,如修改字体颜色、背景颜色等。可以使用JavaScript来实现这个功能。

driver.execute_script("document.querySelector('.element').style.color = 'red';")

这段代码会将class为"element"的元素的字体颜色修改为红色。

4. 获取页面元素的属性值

有时候,我们需要获取页面元素的某个属性值,如获取链接的URL地址。可以使用JavaScript来获取属性值。

url = driver.execute_script("return document.querySelector('a').getAttribute('href');")

这段代码会获取页面上第一个链接元素的URL地址。

5. 向页面中注入jQuery

如果需要使用jQuery库来操作页面元素,可以使用下面的代码向页面中注入jQuery:

driver.execute_script(open('jquery.min.js').read())

这段代码会将当前目录下的"jquery.min.js"文件的内容注入到页面中,并使得页面可以使用jQuery库。
当然!以下是增加的三个案例和相应代码:

6. 获取页面元素的文本内容

有时候,我们需要获取页面元素的文本内容,如获取某个元素的标题或段落内容。可以使用JavaScript来获取元素的textContent属性。

text = driver.execute_script("return document.querySelector('.element').textContent;")

这段代码会获取页面上class为"element"的元素的文本内容。

7. 高亮显示页面元素

有时候,我们需要将页面上的某个元素进行高亮显示,以便更加突出。可以使用JavaScript来修改元素的样式来实现高亮显示。

driver.execute_script("document.querySelector('.element').style.border = '2px solid red';")

这段代码会将class为"element"的元素的边框颜色修改为红色,并增加2像素的边框宽度。

8. 执行延时操作

有时候,我们需要在页面上执行一些延时操作,如延时一段时间后再进行下一步操作。可以使用JavaScript的setTimeout()方法来实现延时操作。

driver.execute_script("setTimeout(function() { alert('延时操作'); }, 3000);")

这段代码会在页面上延时3秒后弹出一个提示框。

希望这些额外的案例和代码对你有所帮助!

总结

通过本文,我们学习了如何在Python中使用Selenium执行JavaScript代码。使用Selenium执行JavaScript代码可以为我们提供更大的灵活性和控制能力,可以模拟各种复杂的操作。通过合理运用JavaScript代码,我们可以实现更多自定义的功能,提升自动化测试的效率和准确性。

希望本文对你了解Python Selenium执行JavaScript有所帮助!

相关文章:

Python Selenium 执行 JavaScript

简介 Selenium是一个用于自动化浏览器操作的工具,可以模拟人工操作,执行各种浏览器操作,包括点击、输入文字、提交表单等。而JavaScript是一种常用的脚本语言,用于在网页上添加交互性和动态性。在Python中使用Selenium执行JavaSc…...

HTML的表单标签和无语义标签的讲解

HTML的表单标签 表单是让用户输入信息的重要途径, 分成两个部分: 表单域: 包含表单元素的区域. 重点是 form 标签. 表单控件: 输入框, 提交按钮等. 重点是 input 标签 form 标签 使用form进行前后端交互.把页面上,用户进行的操作/输入提交到服务器上 input 标签 有很多形态,能…...

8.spark自适应查询-AQE之自适应调整Shuffle分区数量

目录 概述主要功能自适应调整Shuffle分区数量原理默认环境配置修改配置 结束 概述 自适应查询执行(AQE)是 Spark SQL中的一种优化技术,它利用运行时统计信息来选择最高效的查询执行计划,自Apache Spark 3.2.0以来默认启用该计划。…...

【Java 进阶篇】Java Filter 快速入门

欢迎来到这篇有关 Java Filter 的快速入门指南!如果你是一名 Java 开发者或者正在学习 Java Web 开发,Filter 是一个强大的工具,可以帮助你管理和控制 Web 应用程序中的请求和响应。本文将向你解释 Filter 的基本概念,如何创建和配…...

Pytorch R-CNN目标检测-汽车car

概述 目标检测(Object Detection)就是一种基于目标几何和统计特征的图像分割,它将目标的分割和识别合二为一,通俗点说就是给定一张图片要精确的定位到物体所在位置,并完成对物体类别的识别。其准确性和实时性是整个系统的一项重要能力。 R-CNN的全称是Region-CNN(区域卷积神经…...

【PG】PostgreSQL13主从流复制部署(详细可用)

目录 版本 部署主从注意点 1 主库上创建复制用户 2 主库上修改pg_hba.conf文件 3 修改文件后重新加载配置使其生效 4 主库上修改配置文件 5 重启主库pg使参数生效 6 部署从库 7 备份主库数据至从库 停止从库 备份从库的数据库目录 新建数据库数据目录data 创建和…...

学习pytorch15 优化器

优化器 官网如何构造一个优化器优化器的step方法coderunning log出现下面问题如何做反向优化? 官网 https://pytorch.org/docs/stable/optim.html 提问:优化器是什么 要优化什么 优化能干什么 优化是为了解决什么问题 优化模型参数 如何构造一个优化器…...

[算法日志]图论刷题 沉岛思想的运用

[算法日志]图论刷题: 沉岛思想的运用 leetcode 695 岛屿最大面积 给你一个大小为 m x n 的二进制矩阵 grid . 岛屿 是由一些相邻的 1 (代表土地) 构成的组合, 这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻. 你可以假设 grid 的四个边缘都被 0&#xff08…...

Web服务器的搭建

网站需求: 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student 网站访问学生信息,www.openlab.com/data网站访问教…...

如何使用 GTX750 或 1050 显卡安装 CUDA11+

前言 由于兼容性问题,使得我们若想用较新版本的 PyTorch,通过 GPU 方式训练模型,也得更换较新版本得 CUDA 工具包。然而 CUDA 的版本又与电脑显卡的驱动程序版本关联,如果是低版本的显卡驱动程序安装 CUDA11 及以上肯定会失败。 比…...

跟着森老师学React Hooks(1)——使用Vite构建React项目

Vite是一款构建工具,对ts有很好的支持,最近也是在前端越来越流行。 以往的React项目的初始化方式大多是通过脚手架create-react-app(本质是webpack),其实比起Vite来构建,启动会慢一些。 所以这次跟着B站的一个教程,使用…...

强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm)

强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm) node与npm版本对应关系 nvm是好用的Nodejs版本管理工具, 通过它可以方便地在本地调换Node版本。 2020-05-28 Node当前长期稳定版12.17.0,…...

Docker指定容器使用内存

Docker指定容器使用内存 作者:铁乐与猫 如果是还没有生成的容器,你可以从指定镜像生成容器时特意加上 run -m 256m 或 --memory-swap512m来限制。 -m操作指定的是物理内存,还有虚拟交换分区默认也会生成同样的大小,而–memory-…...

做什么数据表格啊,要做就做数据可视化

是一堆数字更易懂,还是图表更易懂?很明显是图表,特别是数据可视化图表。数据可视化是一种将大量数据转化为视觉形式的过程,通过图形、图表、图像等方式呈现数据,以便更直观地理解和分析。 数据可视化更加生动、形象地…...

CSS特效003:太阳、地球、月球的旋转

GPT能够很好的应用到我们的代码开发中,能够提高开发速度。你可以利用其代码,做出一定的更改,然后实现效能。 css实战中,这种球体间的旋转,主要通过rotate()旋转函数来实现。实际上,蓝色的地球和黑色的月球…...

云计算的大模型之争,亚马逊云科技落后了?

文丨智能相对论 作者丨沈浪 “OpenAI使用了Azure的智能云服务”——在过去的半年,这几乎成为了微软智能云最好的广告词。 正所谓“水涨船高”,凭借OpenAI旗下的ChatGPT在全球范围内爆发,微软趁势拉了一波自家的云计算业务。2023年二季度&a…...

【form校验】3.0项目多层list嵌套

const { required, phoneOrMobile } CjmForm.rules; export default function detail() {const { query } getRouterInfo(location);const formRef useRef(null);const [crumbList, setCrumbList] useState([{url: "/wenling/Reviewer",name: "审核人员&quo…...

公共功能测试用例

1、UI测试 布局是否合理,输入框、按钮是否对齐 行列间距是否保持一致弹出窗口垂直居中对其界面的设计风格是否与UI的设计风格一致 系统是否使用统一风格的控件界面的文字是否简洁易懂,是否有错别字 兼容性测试:不同浏览器、版本、分辨率下&a…...

【电路笔记】-并联RLC电路分析

并联RLC电路分析 文章目录 并联RLC电路分析1、概述2、AC的行为3、替代配置3.1 带阻滤波器3.2 带通滤波器 4、总结 电子器件三个基本元件的串联行为已在我们之前的文章系列 RLC 电路分析中详细介绍。 在本文中,介绍了另一种称为并联 RLC 电路的关联。 在第一部分中&a…...

ros1 client

Client(客户端):发布海龟生成请求 [类似Publisher] Serve(服务端):海龟仿真器,接收请求 [类似于Subscriber] Service(服务):生成海龟的具体内容,其中服务类型…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

深度学习习题2

1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

Tauri2学习笔记

教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...