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

Python Selenium实现动态数字虚拟键盘密码输入的问题求助

解决动态虚拟键盘输入密码的问题

我来帮你搞定这个动态数字键盘的密码输入难题!核心思路是不管按钮位置怎么变,我们通过数字本身的文本(或对应属性)来定位按钮,而不是依赖固定的位置或ID。

具体解决方案

首先,你可以先确认目标网站上虚拟数字按钮的HTML结构:打开Chrome开发者工具(F12),点击某个数字按钮,查看它的标签、文本内容或者专属属性(比如data-value、aria-label这类)。对于Interbank的网银页面,数字按钮通常是带数字文本的<button>标签,所以我们可以直接通过文本匹配来定位。

修改你的代码,在标注的无法输入密码的部分添加以下逻辑:

# 定义你的密码(替换成实际密码)
password = "你的密码"

# 等待虚拟键盘加载完成(这里用包含"teclado"(西班牙语键盘)的class来定位容器,确保键盘已渲染)
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div[class*='teclado-numerico']")))

# 遍历密码的每一位数字,逐个点击对应按钮
for digit in password:
    # 通过XPath匹配按钮的文本内容,找到对应数字的按钮
    # 使用normalize-space处理文本,避免前后空格导致匹配失败
    digit_button = WebDriverWait(driver, 5).until(
        EC.element_to_be_clickable((By.XPATH, f"//button[normalize-space(text())='{digit}']"))
    )
    digit_button.click()
    # 加短延迟避免页面未响应,可根据实际情况调整
    time.sleep(0.3)

关键细节说明

  • 等待键盘加载:必须先等待虚拟键盘容器出现,否则会出现找不到元素的错误。
  • 动态定位逻辑:如果按钮文本前后有空格,normalize-space(text())能帮我们过滤掉这些干扰;如果页面上的数字按钮不是用<button>标签,而是<div>或其他,只需把XPath里的button换成对应的标签即可。
  • 防点击过快:添加短时间的sleep是为了给页面足够的响应时间,避免连续点击导致操作失效。

如果发现通过文本匹配还是有问题,你可以查看数字按钮是否有专属的属性(比如data-digit="1"),这时可以把XPath改成//button[@data-digit='{digit}'],这样定位会更精准。

内容的提问来源于stack exchange,提问作者Micky Stone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:57:48