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
相关产品推荐
相关产品推荐

