You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Selenium Python/JS修改单个单词而不覆盖全部文本?

解决Selenium修改页面元素单个单词的问题

要实现只修改元素文本中的单个单词而非覆盖全部内容,核心思路是先获取原文本、修改指定部分、再重新设置回元素,以下是Python和JavaScript两种环境下的具体实现:

Python + Selenium 实现方案

方案1:Python侧处理文本后更新

先获取元素原文本,在Python中完成单词替换,再通过JS脚本设置回去:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化驱动(示例用Chrome)
driver = webdriver.Chrome()

# 定位目标元素
target_element = driver.find_element(By.XPATH, "/html/body/div/div/div[1]/div/div/div[1]/div/div")

# 获取原文本并替换第一个单词
original_text = target_element.text
# 仅替换第一次出现的目标单词(这里替换第一个单词)
modified_text = original_text.replace(original_text.split()[0], "Hello", 1)

# 将修改后的文本设置回元素
driver.execute_script("arguments[0].innerText = arguments[1]", target_element, modified_text)

方案2:直接在JS脚本内完成全部操作

无需Python侧处理文本,直接通过execute_script在浏览器端完成文本获取、替换、更新:

target_element = driver.find_element(By.XPATH, "/html/body/div/div/div[1]/div/div/div[1]/div/div")

driver.execute_script("""
    const text = arguments[0].innerText;
    const wordList = text.split(' ');
    // 替换第一个单词为Hello
    wordList[0] = 'Hello';
    arguments[0].innerText = wordList.join(' ');
""", target_element)

JavaScript + Selenium 实现方案(以WebdriverIO为例)

// 定位元素并修改第一个单词
const targetElement = await driver.$('xpath=/html/body/div/div/div[1]/div/div/div[1]/div/div');
const originalText = await targetElement.getText();
const wordList = originalText.split(' ');
wordList[0] = 'Hello';
await targetElement.setText(wordList.join(' '));

注意事项

  • 如果原文本中第一个单词带有标点(比如Hi, how are you?),split(' ')会将Hi,作为第一个元素,替换后自动保留标点,无需额外处理;
  • 若文本存在多个空格分隔,可改用正则分割:split(/\s+/),避免生成空元素。

内容的提问来源于stack exchange,提问作者0xNinja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:15:41