使用Python Selenium修改网页<p>标签文本的方法求助
解决方法
要修改<p>这类静态文本标签的内容,Selenium原生方法无法直接实现,需要通过执行JavaScript代码来操作DOM元素的文本属性。
原因分析
send_keys()仅适用于可编辑的表单元素(如<input>、<textarea>),普通<p>标签不支持该方法。innerHtml是DOM元素的属性,并非Selenium元素对象的方法,直接调用会报错。
正确代码示例
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待目标元素加载完成(用CSS选择器定位多类名元素更准确) target_p = WebDriverWait(driver, 60).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'p.MuiTypography-root.jss43.MuiTypography-body1')) ) # 执行JS修改文本内容(两种方式二选一即可) # 方式1:仅修改纯文本,保留原标签结构 driver.execute_script("arguments[0].textContent = '25 Years';", target_p) # 方式2:支持替换带HTML标签的内容(此处仅替换文本) # driver.execute_script("arguments[0].innerHTML = '25 Years';", target_p)
补充说明
- 若
MuiTypography-root类名在页面中唯一,也可简化定位为(By.CLASS_NAME, 'MuiTypography-root'),但多类名组合的CSS选择器能避免定位到重复元素。 arguments[0]对应传入的target_p元素,通过JS直接操作DOM属性可直接修改标签内的文本。
内容的提问来源于stack exchange,提问作者Manish Upadhyay
相关产品推荐
相关产品推荐

