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

发布于 2025-01-12 16:38:33 字数 109 浏览 1 评论 0原文

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

Using selenium webdriver I am testing login page and some more tabs using eclipse, maven, testng, but in Login page there is OTP verification. So I put OTP manually so. How to continue next proces as a automation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉态萌生 2025-01-19 16:38:33

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

参考资料

您可以在以下位置找到一些相关的详细讨论:

To continue automation after entering OTP manually using Selenium would be to use the Scanner class as follows:

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);

References

You can find a couple of relevant detailed discussions in:

疯狂的代价 2025-01-19 16:38:33

你不需要手动输入,你可以使用别人的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();

You don't need to enter that manually, you can use someone's otp generator library, like pyotp in python.

import pyotp
totp = pyotp.TOTP('HASHXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
ida2f = totp.now()

for java do you have
https://github.com/BastiaanJansen/otp-java

To resolve the OTP, you generally need to select the "iframe" first, for example in 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

To be reliable, I like to send key by key, and remember about the iframe, it is very important.

For example (java):

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

And remember go to default frame after:

switchTo().defaultContent();
如若梦似彩虹 2025-01-19 16:38:33
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文