0

0

如何在Java中使用Selenium进行自动化测试或爬虫_WebDriver驱动浏览器模拟点击与输入

P粉602998670

P粉602998670

发布时间:2026-03-13 14:40:01

|

162人浏览过

|

来源于php中文网

原创

ChromeDriver 启动失败、元素找不到、点击/输入无效及反爬识别是 Selenium 常见四大问题;应分别用 WebDriverManager 自动管理驱动、WebDriverWait 显式等待+iframe 切换、Actions 模拟操作+JS 注入、禁用自动化特征+覆盖 navigator.webdriver 属性来解决。

如何在java中使用selenium进行自动化测试或爬虫_webdriver驱动浏览器模拟点击与输入

ChromeDriver 启动失败:找不到或版本不匹配

启动 ChromeDriver 报错 java.lang.IllegalStateException: The driver executable does not existsession not created: This version of ChromeDriver only supports Chrome version X,本质是路径没配对、版本没对齐。

实操建议:

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

  • 别用 System.setProperty("webdriver.chrome.driver", "...") 手动指定路径 —— 改用 WebDriverManager 自动管理(Maven 引入 io.github.bonigarcia:webdrivermanager),调用 WebDriverManager.chromedriver().setup() 即可
  • Chrome 浏览器更新后,WebDriverManager 默认拉取最新版驱动;如需锁定版本,加 .driverVersion("124.0.6367.91")
  • 若必须手动放驱动,路径里别含中文、空格,且确保 chromedriver 文件有执行权限(Linux/macOS 下用 chmod +x

元素找不到:findElement 返回 NoSuchElementException

写好 driver.findElement(By.id("submit")) 却抛 NoSuchElementException,不是 selector 写错了,大概率是页面还没加载完、元素还没渲染出来,或者在 iframe 里。

实操建议:

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

  • 别用 Thread.sleep(3000) 硬等 —— 改用 WebDriverWait 配合 ExpectedConditions,比如 new WebDriverWait(driver, Duration.ofSeconds(10)).until(ExpectedConditions.elementToBeClickable(By.id("submit")))
  • 检查是否进了 iframe:用 driver.switchTo().frame("frame-name") 切进去再找;切回来用 driver.switchTo().defaultContent()
  • 动态生成的 ID(如 btn-submit-123abc)别硬写死,改用属性包含匹配:By.cssSelector("button[id*='submit']")

点击无效或输入被清空:事件没触发或页面重绘了

调了 element.click() 没反应,或 element.sendKeys("abc") 输完立刻变空,常见于 Vue/React 页面中事件绑定延迟、表单校验拦截、或者元素被 JS 重建。

云从科技AI开放平台
云从科技AI开放平台

云从AI开放平台

下载

实操建议:

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

  • 优先用 Actions 模拟真实交互:new Actions(driver).moveToElement(element).click().perform(),比原生 click 更可靠
  • 输入前先清空:element.clear(),再 sendKeys();如果仍被清空,试试 element.setAttribute("value", "abc")(通过 JS 注入)
  • 确认元素是否在视口内:用 ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element) 滚动后再操作

爬虫场景下被识别为自动化:如何绕过检测

直接用默认 ChromeDriver 访问某些网站(如淘宝、知乎),页面直接跳转到验证页或返回空内容,因为它们检测到了 webdriver 属性、navigator.webdriver 值、或一些特征指纹。

实操建议:

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

  • 启动时加参数屏蔽自动化特征:ChromeOptions options = new ChromeOptions(); options.addArguments("--disable-blink-features=AutomationControlled"); options.setExperimentalOption("useAutomationExtension", false);
  • 注入 JS 覆盖关键属性:((JavascriptExecutor) driver).executeScript("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})");
  • 别省略 User-Agent —— 用 options.addArguments("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"),但注意和真实浏览器保持一致

绕过检测这事没有银弹,特征在变,策略得跟着调;最稳的方式其实是把 Selenium 当成调试工具,定位好接口后直接用 HttpClientOkHttp 请求,别真靠它跑大规模爬虫。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

1060

2023.08.11

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

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

841

2023.11.06

Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

336

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

776

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1954

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

658

2025.10.17

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.4万人学习

C# 教程
C# 教程

共94课时 | 11.3万人学习

Java 教程
Java 教程

共578课时 | 81.5万人学习

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

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