Selenium send_keys发送浮点数值异常:0.7795变为7795求助
解决Selenium向hotbit.io价格输入框发送小数被异常转换的问题
问题原因
hotbit.io的价格输入框存在自定义JS输入处理逻辑,会对send_keys的批量输入做异常格式化(比如误删小数点),导致发送0.7795变成7795、0.1变成1的情况。
解决方案
1. 逐个字符模拟键盘输入
绕过批量输入的格式化逻辑,拆分字符串逐个发送:
from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By price_str = "0.7795" input_elem = driver.find_element(By.CSS_SELECTOR, "你的价格输入框选择器") input_elem.clear() # 逐个字符输入 for char in price_str: ActionChains(driver).send_keys_to_element(input_elem, char).perform()
2. 通过JS直接设置输入框值
直接操作DOM设置value属性,同时触发change事件确保网站识别值的变化:
from selenium.webdriver.common.by import By price_str = "0.7795" input_elem = driver.find_element(By.CSS_SELECTOR, "你的价格输入框选择器") # 直接设置输入框value driver.execute_script("arguments[0].value = arguments[1];", input_elem, price_str) # 触发change事件,同步网站内部状态 driver.execute_script("arguments[0].dispatchEvent(new Event('change'));", input_elem)
3. 剪贴板粘贴方式
利用系统剪贴板粘贴内容,绕过输入框的自定义处理:
import pyperclip from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By price_str = "0.7795" pyperclip.copy(price_str) input_elem = driver.find_element(By.CSS_SELECTOR, "你的价格输入框选择器") input_elem.clear() # Windows用Ctrl+V,Mac环境替换为Keys.COMMAND ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()
内容的提问来源于stack exchange,提问作者arg
相关产品推荐
相关产品推荐

