You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python Selenium仅能更新一个WebElement值,求解决双元素更新问题

解决Selenium无法更新禁用/只读输入框的问题

看起来你遇到的问题很典型——页面里的那个modelName输入框带有disabledreadonly属性,这会阻止Selenium通过常规的send_keys()方法修改它的值,而另一个能成功更新的元素应该是没有这些限制的。下面是具体的解决方案:

方法1:移除限制属性后再设置值

对于带有disabledreadonly的输入框,我们可以通过JavaScript移除这些属性,让输入框变回可交互状态,再用常规方法设置值:

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

# 定位目标输入框
model_name_input = driver.find_element(By.ID, "modelName")

# 移除disabled属性
driver.execute_script("arguments[0].removeAttribute('disabled');", model_name_input)
# 移除readonly属性
driver.execute_script("arguments[0].removeAttribute('readonly');", model_name_input)

# 清空原有值并设置新值
model_name_input.clear()
model_name_input.send_keys("你的新型号名称")

方法2:直接用JavaScript设置值(更简洁)

如果不想修改元素属性,也可以直接通过JavaScript强制修改输入框的value属性,跳过交互限制:

model_name_input = driver.find_element(By.ID, "modelName")
# 直接设置值
driver.execute_script("arguments[0].value = '你的新型号名称';", model_name_input)

为什么常规方法失效?

Selenium的send_keys()是模拟真实用户的输入操作,而浏览器会阻止用户对带有disabledreadonly属性的输入框进行编辑,所以常规方法会失败。而JavaScript是直接操作DOM元素的属性,不受这些交互限制的影响。

另外,针对你提到的另一个能成功更新的元素,直接使用send_keys()即可,不需要额外处理。

内容的提问来源于stack exchange,提问作者Rohit Kumar

火山引擎 最新活动