Python中使用Selenium如何定位并输入民生银行网页的登录密码元素?

https://nper.cmbc.com.cn/pweb/static/login.html 需要安装控件, 这个登陆密码的地方右键是没反应的, 我查看源代码谢了这个

driver.find_element_by_css_selector('#writeUserId').send_keys(accountname) # 有效
driver.find_element_by_css_selector('#_ocx_passwordChar_login').send_keys(code) # 无效

这里求助这个密码如何输入 20171205225511


Python中使用Selenium如何定位并输入民生银行网页的登录密码元素?

6 回复

安全控件麻烦


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 初始化浏览器驱动(以Chrome为例)
driver = webdriver.Chrome()
driver.get("https://www.cmbc.com.cn")  # 民生银行官网

try:
    # 等待登录入口出现并点击(根据实际页面调整选择器)
    login_btn = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.CLASS_NAME, "login-btn"))  # 示例类名
    )
    login_btn.click()
    
    # 等待密码输入框加载(关键步骤)
    password_input = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, "input[type='password']"))
    )
    
    # 输入密码
    password_input.send_keys("your_password_here")
    
    # 可选:提交登录表单
    # submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
    # submit_btn.click()
    
    print("密码输入成功!")
    
except Exception as e:
    print(f"定位元素失败: {e}")
finally:
    time.sleep(3)  # 演示暂停
    driver.quit()

关键点说明:

  1. 动态加载处理:使用WebDriverWait等待密码框加载完成,避免NoSuchElementException
  2. 定位策略:优先使用CSS_SELECTOR定位type='password'的输入框,这是银行网站常见的密码字段标识。
  3. 备用方案:如果CSS选择器失效,可尝试:
    # 通过ID定位(查看网页源码获取)
    driver.find_element(By.ID, "passwordId")
    
    # 通过name属性定位
    driver.find_element(By.NAME, "password")
    
    # 通过XPath定位(相对路径更稳定)
    driver.find_element(By.XPATH, "//input[[@type](/user/type)='password']")
    

调试建议:先用浏览器开发者工具检查密码框的实际HTML结构,再调整选择器。

一句话总结:用显式等待定位type='password’的input元素最可靠。

这个安全控件似乎是桌面软件 而不是 web 页面。。

用 autoit

直接支付时用手机扫吧

回到顶部