0

0

如何使用 Selenium 正确向 Google 翻译输入框发送文本

霞舞

霞舞

发布时间:2026-03-08 11:45:13

|

645人浏览过

|

来源于php中文网

原创

如何使用 Selenium 正确向 Google 翻译输入框发送文本

本文详解 Selenium 在 Google 翻译页面中无法输入文本的常见原因(如定位错误元素、元素不可交互),并提供精准定位 的 XPath 策略、健壮等待机制及反自动化检测规避技巧。

本文详解 selenium 在 google 翻译页面中无法输入文本的常见原因(如定位错误元素、元素不可交互),并提供精准定位 `

在自动化操作 Google 翻译(https://www.php.cn/link/c9d7ee04cf2f0f4e71dc61c5231975af ElementNotInteractableException 异常,典型报错为:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

根本原因在于:原始代码中尝试对 容器节点调用 .send_keys(),但该节点并非可编辑的表单控件——它只是包裹

✅ 正确做法是精确定位到实际可编辑的 。Google 翻译的源文本输入框具有明确的可访问性属性:

<textarea 
  aria-label="Source text" 
  jsaction="input:ig6hZ;focus:J9N4Wb;" 
  ...>
</textarea>

因此,应使用以下稳定且语义清晰的 XPath 表达式:

Veed AI Voice Generator
Veed AI Voice Generator

Veed推出的AI语音生成器

下载
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = Options()
options.add_argument("start-maximized")
options.add_argument('--log-level=3')
options.add_experimental_option("prefs", {"profile.default_content_setting_values.notifications": 1})
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')

# 推荐显式指定 chromedriver 路径(避免依赖 PATH)
srv = Service()  # 或 Service(r"C:\path\to\chromedriver.exe")
driver = webdriver.Chrome(service=srv, options=options)
wait = WebDriverWait(driver, 10)

try:
    driver.get("https://translate.google.com/")

    # 等待并点击“全部接受”按钮(Cookie 弹窗)
    accept_btn = wait.until(
        EC.element_to_be_clickable((By.XPATH, '//button[@aria-label="Alle akzeptieren"]'))
    )
    accept_btn.click()

    # ✅ 关键修正:定位 <textarea> 而非 <c-wiz>
    # 推荐优先使用带 aria-label 的定位(最稳定、抗 DOM 变更能力强)
    src_textarea = wait.until(
        EC.element_to_be_clickable((By.XPATH, '//textarea[@aria-label="Source text"]'))
    )
    src_textarea.clear()  # 清空可能存在的默认值或残留内容
    src_textarea.send_keys("This is some test!")

    print("✅ 文本已成功输入至源文本框")

except Exception as e:
    print(f"❌ 执行失败: {e}")
finally:
    # driver.quit()  # 生产环境建议保留;调试时可注释以查看结果
    pass

? 为什么 //textarea[@aria-label="Source text"] 更可靠?

  • aria-label 是专为无障碍设计的语义化属性,Google 官方长期维护,极少变更;
  • 相比 //textarea(无上下文约束),它能唯一匹配目标输入框,避免误选隐藏/辅助
  • 比基于 jsdata、class 或层级深度的 XPath 更具可维护性。

⚠️ 重要注意事项:

  • ❌ 不要对非表单元素(如
    )调用 .send_keys() —— 它们不具备 contenteditable 或原生输入能力;
  • ✅ 始终结合 EC.element_to_be_clickable()(隐含 presence + visibility + enabled + interactable 四重校验);
  • ? 若页面存在动态加载(如翻译框延迟渲染),可在 get() 后增加 time.sleep(1) 或使用 EC.presence_of_element_located 预检;
  • ? 中文用户注意:aria-label="Source text" 在中文版页面仍保持英文(国际化标准),无需本地化适配。
  • ? 进阶建议(提升稳定性):

    • 使用 driver.execute_script("arguments[0].value = arguments[1];", element, "text") 绕过某些前端拦截逻辑(如 React 受控组件);
    • 添加显式 clear() 防止历史内容干扰;
    • 对关键步骤添加 print(f"Found: {element.tag_name}, enabled: {element.is_enabled()}") 辅助调试。

    通过精准定位语义化表单元素、合理运用显式等待与异常处理,即可稳定实现 Google 翻译页面的自动化文本输入。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

17

2026.02.03

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

809

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

28

2025.12.06

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2863

2024.08.16

PHP 命令行脚本与自动化任务开发
PHP 命令行脚本与自动化任务开发

本专题系统讲解 PHP 在命令行环境(CLI)下的开发与应用,内容涵盖 PHP CLI 基础、参数解析、文件与目录操作、日志输出、异常处理,以及与 Linux 定时任务(Cron)的结合使用。通过实战示例,帮助开发者掌握使用 PHP 构建 自动化脚本、批处理工具与后台任务程序 的能力。

65

2025.12.13

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

28

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

68

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

164

2026.03.04

热门下载

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

精品课程

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

共32课时 | 6万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.9万人学习

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

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