当前位置: 首页 > 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(服务):生成海龟的具体内容,其中服务类型…...

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

微信小程序云开发平台MySQL的连接方式

注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

SpringTask-03.入门案例

一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...