【发布时间】:2022-08-20 22:19:03
【问题描述】:
使用 selenium webdriver 我正在使用 eclipse、maven、testng 测试登录页面和更多选项卡,但在登录页面中有 OTP 验证。所以我手动输入了OTP。如何以自动化方式继续下一个过程?
标签: java eclipse selenium selenium-webdriver user-input
使用 selenium webdriver 我正在使用 eclipse、maven、testng 测试登录页面和更多选项卡,但在登录页面中有 OTP 验证。所以我手动输入了OTP。如何以自动化方式继续下一个过程?
标签: java eclipse selenium selenium-webdriver user-input
要在使用 Selenium 手动输入 OTP 后继续自动化,将使用 Scanner 类,如下所示:
driver.findElement(By.xpath("xpath_mobile_field")).sendKeys("9818414799");
scanner_user = new Scanner(System.in);
System.out.println("Enter the OTP: ");
String user = scanner_user.nextLine();
driver.findElement(By.xpath("xpath_otp_field")).sendKeys(user);
您可以在以下位置找到一些相关的详细讨论:
【讨论】:
您不需要手动输入,您可以使用某人的 otp 生成器库,例如 python 中的 pyotp。
import pyotp
totp = pyotp.TOTP('HASHXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
ida2f = totp.now()
对于java,你有吗 https://github.com/BastiaanJansen/otp-java
要解决 OTP,通常需要先选择“iframe”,例如在 python 中。
try:
iframe = driver.find_element(By.XPATH, '//*[@id="xxxxxOTP"]')
driver.switch_to.frame(iframe)
iKeys = 0
for strs in ida2f:
iKeys = iKeys + 1
driver.find_element(By.XPATH, f'//*[@id="xxxx-html"]/body/div[2]/div[1]/div/div/div/fieldset/div/input[{iKeys}]').click()
time.sleep(0.1)
driver.find_element(By.XPATH, f'//*[@id="xxxx-html"]/body/div[2]/div[1]/div/div/div/fieldset/div/input[{iKeys}]').send_keys(strs)
time.sleep(0.1)
driver.switch_to.default_content()
time.sleep(3)
except:
continue
为了可靠,我喜欢一键发送。
【讨论】: