Используйте селен для ввода пароля на веб-сайте с виртуальной клавиатурой - PullRequest
0 голосов
/ 09 октября 2019

Я использую селен для входа на сайт. Но когда он появляется на странице паролей, сайт запрашивает ввод через виртуальную клавиатуру, и команда send_keys не работает.

CODE:

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 CODE:

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 октября 2019

Вы можете определить функцию, которая будет проходить через каждую букву вашего пароля, как (поскольку виртуальная клавиатура - согласно вашему снимку экрана - это своего рода элементы div, каждый из которых имеет атрибут key, имеющий значение, соответствующеезначение ключа элемента клавиатуры)

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

, который будет просто щелкать соответствующие div на странице.

PS - этот простой пример предполагает работу с простыми паролями, которые не требуют shift значение ключа

0 голосов
/ 09 октября 2019

Вы можете попробовать использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...