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

如何在Python3中使用Selenium WebDriver向可编辑<p>标签写入内容?

解决Selenium向contenteditable的

标签写入内容的问题

嘿,我来帮你搞定这个报错问题!你遇到的InvalidSelectorException是因为用错了元素定位方法,咱们一步步来修正:

错误原因分析

你用find_element_by_tag_name()的时候,传入了混合属性条件的字符串——这个方法只接受单纯的HTML标签名(比如直接写"p"),不能加上['contenteditable':'True'这种属性过滤条件,浏览器识别不了这个无效的选择器,自然就抛出错误啦。

正确的解决方法

要定位带contenteditable="true"属性的<p>标签,得用支持属性过滤的选择器(比如CSS选择器或XPath),再用正确的方法写入内容:

方法一:CSS选择器定位 + send_keys写入

这是最常用的方案,用CSS选择器精准定位元素后,通过send_keys()输入文本:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get(url_link)

# 用CSS选择器定位contenteditable为true的p标签
target_element = browser.find_element_by_css_selector("p[contenteditable='true']")

# 写入内容
target_element.send_keys("hello")

方法二:send_keys无效时用JavaScript注入

有时候send_keys()对contenteditable元素可能不生效,这时候可以通过执行JavaScript直接设置元素文本:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get(url_link)

target_element = browser.find_element_by_css_selector("p[contenteditable='true']")

# 用JavaScript设置元素的innerText(也可以用textContent或innerHTML)
browser.execute_script("arguments[0].innerText = 'hello';", target_element)

备选定位方式:XPath

如果你更习惯用XPath,也可以这样写:

target_element = browser.find_element_by_xpath("//p[@contenteditable='true']")

注意:HTML里的属性值是小写的"true",选择器里尽量保持一致,避免大小写不匹配的问题哦。

内容的提问来源于stack exchange,提问作者Bhargav Desai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:16:48