如何使用Selenium和Java手动输入OTP后继续自动化



使用selenium webdriver,我正在使用eclipse、maven、testng测试登录页面和更多选项卡,但在登录页面中有OTP验证。所以我手动放置OTP。如何继续下一步的自动化过程?

要在使用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);

参考文献

您可以在中找到一些相关的详细讨论

  • 从selenium webderiver中的IDE/控制台获取用户输入

您不需要手动输入,您可以使用某人的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

为了可靠,我喜欢逐个密钥发送,并记住iframe,这非常重要。

例如(java(:

driver.switchTo().frame("xxxxxxx");

记住在之后转到默认帧

switchTo().defaultContent();

相关内容

  • 没有找到相关文章

最新更新