news 2026/3/23 12:30:32

[Web自动化] Selenium执行JavaScript语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[Web自动化] Selenium执行JavaScript语句

10.3 Selenium执行JavaScript语句

在 Selenium 中,你可以使用execute_script()execute_async_script()方法来执行 JavaScript 语句。
以下是一些实用的例子:

10.3.1 执行简单的 JavaScript 语句

fromseleniumimportwebdriver driver=webdriver.Chrome()driver.get("http://example.com")# 执行简单的 JavaScript 语句,比如打印一条消息到控制台driver.execute_script("console.log('Hello, World!');")

10.3.2 处理需要JavaScript渲染的页面元素

有时,页面元素是通过JavaScript动态生成的,直接使用Selenium的find_element方法可能找不到。这时,可以使用上述的execute_script方法来访问这些元素。

# 执行JavaScript代码driver.execute_script("alert('Hello from JavaScript!');")# 访问需要JavaScript渲染的页面元素element=driver.execute_script("return document.getElementById('dynamic_element');")

10.3.3 通过 JavaScript 点击元素

# 假设页面上有一个按钮button=driver.find_element_by_id("myButton")# 使用 JavaScript 来点击这个按钮driver.execute_script("arguments[0].click();",button)

10.3.4 获取元素属性值

element=driver.find_element_by_id("myElement")# 使用 JavaScript 获取元素的 'class' 属性值class_name=driver.execute_script("return arguments[0].className;",element)print(class_name)

10.3.5 设置元素属性值

element=driver.find_element_by_id("myElement")# 使用 JavaScript 设置元素的 'style.display' 属性driver.execute_script("arguments[0].style.display = 'none';",element)

10.3.6 滚动到页面底部

# 使用 JavaScript 滚动到页面底部driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

10.3.7 等待页面元素加载完成

# 等待某个元素出现在页面上element=driver.find_element_by_id("myElement")script=""" return new Promise((resolve, reject) => { const observer = new MutationObserver((mutations, observer) => { if (document.contains(arguments[0])) { resolve(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); """driver.execute_script(script,element)

10.3.8 执行异步 JavaScript 代码

# 假设你需要执行异步的 JavaScript 代码,比如等待一个 AJAX 请求完成script=""" return fetch('https://api.example.com/data') .then(response => response.json()) .then(data => { return data; // 或者你想要操作的数据 }); """result=driver.execute_async_script(script)print(result)

10.3.9 通过 JavaScript 获取元素的内部文本

element=driver.find_element_by_id("myElement")# 使用 JavaScript 获取元素的内部文本text=driver.execute_script("return arguments[0].textContent;",element)print(text)

10.3.10 通过 JavaScript 操作浏览器窗口

# 使用 JavaScript 关闭当前浏览器窗口driver.execute_script("window.close();")

这些例子展示了如何使用execute_script()方法执行各种 JavaScript 操作。在某些情况下,你可能需要将找到的 WebElement 作为参数传递给 JavaScript 代码,arguments[0]是一个特殊的变量,它在 JavaScript 代码中代表了传递给execute_script()的第一个参数。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/17 15:35:20

模拟Clade Code的Skills机制的demo代码

Skills Runtime GitHub:https://github.com/crisschan/mini_skills_runtime 本地 Skill 执行运行时 - 完全对齐 Claude Code 的 Skills 组织方式 特性 Skill 定义: 通过 SKILL.md 定义 Skill,支持结构化指令、输入输出、安全配置 Skill 路由: 基于关键词匹配的智能路由系统…

作者头像 李华
网站建设 2026/3/15 18:53:11

06. 信号源讲解(六)---VSFFM、ISFFM篇 I PSpice高级应用

今天分享的是在电路仿真中模拟调频信号的重要工具:PSpice中的单频调频信号源(VSFFM / ISFFM)。它能帮助我们生成频率随时间按正弦规律变化的信号,常用于模拟通信系统、测试滤波器响应或分析锁相环等电路的性能。 简单来说&#x…

作者头像 李华
网站建设 2026/3/22 6:07:30

社会网络仿真软件:UCINET_(4).数据准备与导入

数据准备与导入 在进行社会网络分析之前,首要步骤是准备好数据并将其导入到UCINET中。数据准备涉及数据的收集、清洗和格式化,而数据导入则是将准备好的数据加载到UCINET中以便进行进一步的分析。本节将详细介绍这两个步骤,并提供具体的例子…

作者头像 李华
网站建设 2026/3/13 18:23:29

Flutter for OpenHarmony 实战:投票管理系统完整开发指南

Flutter for OpenHarmony 实战:投票管理系统完整开发指南 文章目录 Flutter for OpenHarmony 实战:投票管理系统完整开发指南摘要一、项目背景与功能概述1.1 投票系统的应用场景1.2 应用功能规划1.3 投票规则说明 二、投票系统设计原则2.1 用户界面设计2…

作者头像 李华
网站建设 2026/3/19 14:03:06

终于有人愿意把 SPC 精益本质讲透了

搞生产,做质量,SPC 这三个字听得耳朵起茧。报表没少做,图没少画,真到出了问题,该乱的还是乱。问题出在哪?很多人把 SPC 当数学题,当上级任务,偏偏忘了它最该是什么——一套让过程自己…

作者头像 李华