0

0

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

聖光之護

聖光之護

发布时间:2026-03-08 11:46:02

|

960人浏览过

|

来源于php中文网

原创

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

本文详解 Selenium 在 Google 翻译页面中无法输入文本的常见原因(如定位到非交互元素),并提供精准定位 的 XPath 策略、完整可运行代码及关键注意事项。

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

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

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

根本原因在于:错误地将操作目标指向了不可输入的容器元素(如 )而非真正的可编辑 是 Google 前端常用的封装组件标签,它本身不具备输入能力;真正接收用户文本的是其内部的

✅ 正确做法是:通过语义化、稳定且唯一的选择器精确定位 。推荐使用以下两种 XPath 方式(按优先级排序):

Veed AI Voice Generator
Veed AI Voice Generator

Veed推出的AI语音生成器

下载
  • 首选(高鲁棒性)://textarea[@aria-label="Source text"]
    利用 ARIA 标签精准匹配源语言输入框,不受 DOM 结构微调影响;
  • 备选(通用性强)://textarea(需配合显式等待与索引校验,不推荐单独使用)。

以下是修正后的完整、生产就绪代码示例(已适配新版 Selenium 4+ 及 ChromeDriver 最佳实践):

import time
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
from selenium.webdriver.common.action_chains import ActionChains

if __name__ == '__main__':
    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 中包含
    service = Service()  # 如需自定义路径:Service("path/to/chromedriver.exe")
    driver = webdriver.Chrome(service=service, options=options)
    wait = WebDriverWait(driver, 10)

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

        # 1. 等待并点击“接受全部”Cookie 按钮(若存在)
        try:
            accept_btn = wait.until(
                EC.element_to_be_clickable((By.XPATH, '//button[@aria-label="Alle akzeptieren" or @aria-label="Accept all"]'))
            )
            accept_btn.click()
        except:
            pass  # 按钮可能未出现,忽略

        # 2. 精准定位源文本输入框 —— 关键修复点!
        source_textarea = wait.until(
            EC.element_to_be_clickable((By.XPATH, '//textarea[@aria-label="Source text"]'))
        )

        # 3. 清空并输入内容(增加容错:先清空再发送)
        source_textarea.clear()
        source_textarea.send_keys("This is some test!")

        # ✅ 可选:验证输入是否生效(例如检查 value 属性)
        assert "This is some test!" in source_textarea.get_attribute("value"), "Text input failed!"

        print("✅ Text successfully entered into Google Translate input field.")

    finally:
        # driver.quit()  # 生产环境建议保留;调试时可注释以便观察结果
        pass

? 关键注意事项与最佳实践:

  • 永远避免对
    等容器元素调用 .send_keys():它们通常不可聚焦、不可编辑,仅用于布局或状态管理;
  • 优先使用 aria-label、id 或 name 等语义化属性定位表单控件,比依赖 jsdata、class 或层级路径更稳定;
  • element_to_be_clickable 不等于“可输入”:该条件仅保证元素可见且可点击(如按钮),对
  • 务必调用 .clear():防止页面缓存或残留值干扰新输入;
  • 规避反爬增强策略:您已启用多项反检测配置(如禁用 automation extension、屏蔽 blink 特性),这是正确的;但注意 Google 可能动态更新检测逻辑,必要时可补充 navigator.webdriver 伪造(需执行 JS);
  • 超时与异常处理:真实项目中应包裹 try/except 并记录日志,避免因网络波动或 UI 变更导致脚本中断。
  • 通过以上修正与规范,即可稳定、可靠地向 Google 翻译输入框注入文本——核心原则始终是:找准真正的可交互 HTML 表单元素,而非其父容器。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

809

2024.01.03

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

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

28

2025.12.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

554

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

738

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

6065

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

492

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

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

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

23

2026.03.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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号