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

Selenium中send_keys()无法传入element.text内容的问题求助

问题:Selenium send_keys传变量无效,但固定值正常

我需要把页面上显示的数字文本输入到输入框中,使用的代码如下:

while True:
    try:
        number = driver.find_element(By.CSS_SELECTOR, "div > div.big-number")
        break
    except:
        pass

print(number.text)

while True:
    try:
        text_field = driver.find_element(By.CSS_SELECTOR, "div.css-1qvtbrk:nth-child(2) > input:nth-child(1)")
        print("Found text field")
        break
    except:
        pass

numberstr = number.text
text_field.send_keys(numberstr) # doesn´t work

尝试过以下写法,均无效:

text_field.send_keys(str(number.text)) # doesn't work
text_field.send_keys(number.text + " ") # doesn't work

但传入固定值text_field.send_keys("1")可以正常工作,且print(number.text)能正确打印出目标数字。


解决方法
  • 先清空输入框再输入
    部分输入框可能存在默认内容或状态问题,先清空再输入:

    text_field.clear()
    text_field.send_keys(numberstr)
    
  • 清理文本中的隐藏字符
    页面获取的文本可能包含空格、换行等不可见字符,先做过滤处理:

    # 去除首尾空白字符
    numberstr = number.text.strip()
    text_field.send_keys(numberstr)
    
    # 或者只保留数字字符
    numberstr = ''.join(filter(str.isdigit, number.text))
    text_field.send_keys(numberstr)
    
  • 模拟逐字符输入(防拦截)
    部分页面有反爬机制,快速批量输入会被拦截,模拟手动逐字符输入:

    import time
    numberstr = number.text.strip()
    for char in numberstr:
        text_field.send_keys(char)
        time.sleep(0.1)  # 每个字符间隔0.1秒,可根据页面调整
    
  • 确保输入框激活
    先点击输入框激活焦点,再执行输入操作:

    text_field.click()
    text_field.clear()
    text_field.send_keys(numberstr)
    
  • 用JavaScript强制设置值
    如果以上方法都无效,直接通过JS修改输入框的value属性:

    driver.execute_script("arguments[0].value = arguments[1];", text_field, numberstr)
    

内容的提问来源于stack exchange,提问作者Adrian Rangel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:30:18