This commit is contained in:
ddrwode
2026-02-20 21:55:13 +08:00
parent 29c1b3ffd1
commit 8c6dd81844

View File

@@ -210,6 +210,28 @@ class BitmartFuturesTransaction:
except:
return False
def input_size(self, size: int):
"""在数量框输入张数(兼容受控组件:先聚焦、输入、再触发 input 事件)"""
try:
# 优先用 id可能不是 input 而是 div/自定义组件
ele = self.page.ele('x://*[@id="size_0"]')
if not ele:
ele = self.page.ele('x://input[@id="size_0"]')
if not ele:
logger.warning("未找到数量框 size_0")
return False
time.sleep(0.3)
ele.click(by_js=True)
time.sleep(0.2)
s = str(int(size))
# 清空后输入;若页面是 React/Vue 受控组件,再通过 JS 设值并触发事件
ele.input(s, clear=True)
ele.run_js("this.value = arguments[0]; this.dispatchEvent(new Event('input', { bubbles: true }));", s)
return True
except Exception as e:
logger.warning(f"输入数量失败: {e}")
return False
def 平仓(self):
"""平仓操作"""
self.click_safe('x://span[normalize-space(text()) ="市价"]')
@@ -582,9 +604,10 @@ class BitmartFuturesTransaction:
# 进入交易页面
self.page.get("https://derivatives.bitmart.com/zh-CN/futures/ETHUSDT")
time.sleep(1) # 等待交易表单渲染
self.click_safe('x://button[normalize-space(text()) ="市价"]')
self.page.ele('x://*[@id="size_0"]').input(vals=25, clear=True)
time.sleep(0.3)
self.input_size(self.default_order_size)
page_start = False