【问题标题】:Use selenium to enter password on website that has virtual keyboard在具有虚拟键盘的网站上使用 selenium 输入密码
【发布时间】:2019-10-09 17:27:52
【问题描述】:

我正在使用 selenium 登录网站。但是当它到达密码页面时,网站要求通过虚拟键盘输入,而 send_keys 命令不起作用。

代码:

import time
from selenium import webdriver as wd
from selenium.webdriver.common.keys import Keys

# Página 1
chrome = wd.Chrome(executable_path='R:\\USUARIOS\\YVieira\\chromedriver.exe')
chrome.get('https://extranet.btgpactual.com')
user=chrome.find_element_by_id('txtLogin')
user.send_keys('yan.vieira')
user.send_keys(Keys.ENTER)
time.sleep(3)
#Página 2

senha=chrome.find_element_by_id('txtSenha')
senha.send_keys("pssw")

HTML 代码:

<input type="password" id="txtSenha" name="txtSenha" maxlength="100">

【问题讨论】:

  • 请以文本形式分享 HTML 代码、您尝试过的代码和遇到的错误
  • 尝试使用 virtualKeyBoard loginKeyboard 输入值。

标签: python python-3.x selenium


【解决方案1】:

你可以尝试使用JavaScript来设置值:

password = "pssw"
senha=chrome.find_element_by_id('txtSenha')
chrome.execute_script(f"arguments[0].value='{password}'", senha)
chrome.find_element_by_id("btnValidate").click()

【讨论】:

    【解决方案2】:

    您可以定义一个函数来遍历密码的每个字母,例如(因为虚拟键盘 - 根据您的屏幕截图 - 是一种 div 元素,每个元素都有 key 属性,其值对应于键盘元素的键值)

    passwd = "my pass"
    for key in passwd:
      chrome.find_element_by_xpath('//div[@key="' + key + '"]').click()
    

    这只会点击页面上相应的 div。

    附: - 这个简单的例子假设使用不需要shift键值的简单密码

    【讨论】:

      猜你喜欢
      • 2021-11-13
      • 2012-07-21
      • 2014-02-09
      • 1970-01-01
      • 2015-08-24
      • 2012-11-18
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      相关资源
      最近更新 更多