我在(Python with Selenium)中定义在虚拟键盘上输入密码的代码时遇到了一个问题,在虚拟键盘上,每次页面更新时数字的位置都会发生变化。我没有问题匹配这些字母,因为它们是静态的。但是我找不到如何点击正确的数字
注意:密码字段仅允许您通过键盘输入值
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
import time
driver = webdriver.Chrome(
'C:/Users/migxx/Documents/Mixx/Python/IB_TaskBot/chromedriver.exe')
driver.get('https://bancaporinternet.interbank.pe/')
# target username
cardNumber = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[id='25']")))
documentNumber = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[id='39']")))
cardNumber.clear()
cardNumber.send_keys("4211550014142020")
documentNumber.clear()
documentNumber.send_keys("10100010")
act = ActionChains(driver)
act.send_keys(Keys.TAB).perform()
#In this part I cannot enter the password!!!!!!!!!!!!!
我能想到的最简单的解决办法如下:
单击该字段以显示键盘
driver.find_element_by_xpath('//*[@id="46"]').click()
因为每个数字都是预定义的,并且根据数字的不同,它将出现在以下任一位置:
a->span->svg->g->path[d='...']
(或)a->span->svg->g->polygon[points='...']
您可以这样定义自己的数字:
现在,如果您想插入
2047
,您可以这样做:我已经使用firefox驱动程序测试了这段代码。它也应该与chrome drive配合使用