0

0

Python怎么操作浏览器_Selenium自动化测试环境配置与全自动网页点击操作

P粉602998670

P粉602998670

发布时间:2026-03-11 11:00:32

|

387人浏览过

|

来源于php中文网

原创

应安装与chrome主版本号严格匹配的chromedriver,推荐用webdriver-manager自动管理;元素未加载完成时需用显式等待而非sleep;iframe内元素须先切换;点击无响应可能因遮罩层,需检查可见性及启用状态;务必用driver.quit()彻底退出浏览器。

python怎么操作浏览器_selenium自动化测试环境配置与全自动网页点击操作

装哪个 WebDriver 才不报 WebDriverException: Message: 'chromedriver' executable needs to be in PATH

不是随便下个 Chrome 就能用 Selenium 的,关键在 chromedriver 版本必须和本地 Chrome 浏览器主版本号严格匹配(比如 Chrome 124.x 对应 chromedriver 124.x)。直接去官网下容易错,推荐用 webdriver-manager 自动管理:

  • 运行 pip install webdriver-manager
  • 代码里不用手动指定路径,直接写:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    <p>driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
  • 如果公司内网禁外网,就得手动下载:去 chromedriver.chromium.org 查你 Chrome 的版本(地址栏输 chrome://version),下对应 zip,解压后把 chromedriver 放进系统 PATH,或传绝对路径给 Service()

为什么 find_element(By.ID, "xxx") 总抛 NoSuchElementException

元素没加载出来就找,是头号原因。Selenium 不等页面“渲染完”,只等 DOM 加载完,而 Vue/React 的按钮、表单常是 JS 动态插入的。

  • 别用 time.sleep(3) 硬等——不稳定还拖慢速度
  • 改用显式等待:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    <p>wait = WebDriverWait(driver, 5)  # 最多等 5 秒
    element = wait.until(EC.element_to_be_clickable((By.ID, "submit-btn")))
  • 注意 EC.element_to_be_clickableEC.presence_of_element_located 区别:前者要求可点击(不被遮挡、不 disabled),后者只要 DOM 里存在;选错就白等
  • iframe 里的元素要先 driver.switch_to.frame("frame-name"),否则永远找不到

点击没反应?检查是不是被 overlay 或 loading 遮住了

现代网页常有半透明遮罩层(比如弹窗前的灰色蒙版)、骨架屏、loading 动画,这时候 click() 会静默失败,不报错但也不触发行为。

Moshi Chat
Moshi Chat

法国AI实验室Kyutai推出的端到端实时多模态AI语音模型,具备听、说、看的能力,不仅可以实时收听,还能进行自然对话。

下载

立即学习Python免费学习笔记(深入)”;

  • 先确认元素是否真“可交互”:
    elem = driver.find_element(By.ID, "save-btn")
    print(elem.is_displayed(), elem.is_enabled())  # 应该都是 True
  • 如果 is_displayed() 是 False,可能是被其他元素盖住,试试用 JS 强点:
    driver.execute_script("arguments[0].click();", elem)
  • 但 JS 点击绕过事件监听,某些前端逻辑(如表单校验)可能不触发,优先排查遮罩是否还在——比如等 EC.invisibility_of_element_located((By.CLASS_NAME, "loading-overlay"))

Python 脚本跑完浏览器不关?driver.quit()driver.close() 别混用

close() 只关当前标签页,quit() 才真正退出整个浏览器进程并释放内存。漏掉 quit() 会导致后台残留一堆 chrome.exe 进程,占 CPU 和端口。

  • 务必在 try/finallywith 里调用:
    driver = webdriver.Chrome(...)
    try:
        driver.get("https://example.com")
        # ...操作
    finally:
        driver.quit()  # 这行不能少
  • 如果用了 Service(..., log_path="...")quit() 也会关闭日志文件句柄,避免 Windows 下文件被占用打不开
  • CI/CD 环境中(如 GitHub Actions),不 quit() 可能导致后续任务因端口冲突失败

Chrome 的自动更新、WebDriver 版本漂移、动态加载时机、遮罩层干扰、资源清理遗漏——这些点串起来才是真实跑通一个点击脚本的最小闭环。漏掉任意一环,都会卡在“看起来写了,但就是不动”。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1054

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

837

2023.11.06

pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

373

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

435

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

801

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

370

2025.07.23

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号