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

求助:无法在Selenium中为指定元素设置值的问题

问题:无法修改自定义数字输入框的显示值

页面上的数字输入框是自定义的<div>元素(带有role="button"和tabindex="0"),默认显示值为5。尝试用send_keys和常规execute_script设置value属性均未生效,页面显示的数值无变化,且无报错信息。

页面元素结构

<div class="sc-brqgnP gbUepm">
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div class="sc-jWBwVP fyostQ"></div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div class="sc-jWBwVP fyostQ"></div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
    <div role="button" tabindex="0" class="sc-cvbbAY jMSnje code ">5</div>
</div>

已尝试的代码

self.wait.until(ec.visibility_of_element_located((By.XPATH, locator)))
element = self.driver.find_element(By.XPATH, locator)
# self.driver.execute_script("arguments[0].value='123456789';", element)
element.send_keys('123456789')

解决方案

  • 直接修改元素文本内容:这类自定义输入框依靠文本节点展示数值,而非value属性,因此修改textContent或innerText即可更新显示:

    # 修改textContent
    self.driver.execute_script("arguments[0].textContent = '123456789';", element)
    # 或修改innerText
    self.driver.execute_script("arguments[0].innerText = '123456789';", element)
    
  • 同步组件内部状态:若页面使用React、Vue等前端框架,直接修改DOM文本可能无法同步组件状态,需触发组件的更新事件:

    self.driver.execute_script("""
        const el = arguments[0];
        el.textContent = '123456789';
        // 触发change事件同步状态
        el.dispatchEvent(new Event('change', { bubbles: true }));
    """, element)
    
  • 模拟完整用户交互:部分组件需要先激活才能输入,可先点击元素,再清空原有内容并输入新值:

    element.click()
    # 清空原有内容(若clear无效则用脚本清空)
    self.driver.execute_script("arguments[0].textContent = '';", element)
    element.send_keys('123456789')
    

内容的提问来源于stack exchange,提问作者Mojiz Mehdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:55:20