当前位置: 首页 > 知识库问答 >
问题:

在身份验证弹出窗口中输入用户名/密码

凤高澹
2023-03-14

当我从Eclipse(selenium)启动网站时,会弹出一个身份验证框,如下所示:

这里我无法输入用户名和密码,以下是我尝试过的:
1)将句柄切换到弹出窗口并识别Xpath
2)在URL中发送用户名和密码(如何使用Selenium WebDriver处理登录弹出窗口?)
3)Sikuli(但在不同系统中执行时需要图像捕获)
4)使用机器人功能

        Robot rb = new Robot();
        StringSelection username = new StringSelection("XXXXX");
        System.out.println("Entering username");
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(username, null);            
        rb.keyPress(KeyEvent.VK_CONTROL);
        rb.keyPress(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_CONTROL);

        //tab to password entry field
        rb.keyPress(KeyEvent.VK_TAB);
        rb.keyRelease(KeyEvent.VK_TAB);
        Thread.sleep(2000);

        //Enter password by ctrl-v
        StringSelection pwd = new StringSelection("YYYYYYY");
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(pwd, null);
        rb.keyPress(KeyEvent.VK_CONTROL);
        rb.keyPress(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_V);
        rb.keyRelease(KeyEvent.VK_CONTROL);

        //press enter
        rb.keyPress(KeyEvent.VK_ENTER);
        rb.keyRelease(KeyEvent.VK_ENTER);

到目前为止,上述操作都不起作用,只是在到达网站(driver.get(URL))之后,控件似乎没有返回eclipse

共有2个答案

潘向明
2023-03-14

下面的代码应该工作,它可以重构:)

driver.navigate().to("url");
StringSelection selection = new StringSelection("username");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
Thread.sleep(5000);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(2000);
selection = new StringSelection("password");
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);  
robot.keyRelease(KeyEvent.VK_ENTER);              
曹铭晨
2023-03-14

使用AutoIT脚本填充该窗口。这是在带硒的Windows中优雅地处理此问题的唯一方法。在Selenium中使用AutoIt检查基于Windows的身份验证弹出http://www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

 类似资料:
  • 如图所示,禁用chrome浏览器保存的用户名密码弹窗。 还有就是,什么时候会弹出这个用户名密码弹窗,为什么有的输入框不弹出呢?

  • 问题内容: 我正在尝试使用以下代码处理身份验证弹出窗口: 当我执行测试时,页面会显示身份验证弹出窗口,并且仍会加载直到我单击“取消”按钮。那一刻,我可以访问下一页,这意味着身份验证成功,但仍然始终显示身份验证弹出窗口 问题答案: 警报方法使你可以跳过“ Http基本身份验证”框。 从Selenium 3.4开始,它仍处于beta版本 目前,仅针对

  • 给定以下方案: 一个有一个JComboBox和一个JTextField 后者有一个InputVerifier提供自己的错误消息。 text Field是当前焦点所有者,其输入不满足inputVerifier(此处:小于3个字符)。 现在您单击组合,它将触发InputVerifier。 InputVerifier反过来将显示其错误消息。 您确认错误消息,瞧,组合的弹出窗口出现,准备接受选择。 对我来

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 问题内容: 下面是我的AutoIt脚本(UI3_Authentication.au3),用于处理Windows身份验证弹出窗口。 以下是我对上述AutoIt exe文件的Selenium代码调用。 当我运行上述Selenium文件时,它将打开页面并弹出身份验证。但这不是在插入用户名和密码。它等待用户输入。 问题答案: 我解决了 其实这是我的坏事。以前,我的代码是这样的: 我在get()之前添加了a

  • 客户已创建密钥存储库并存储凭据。为了验证密钥存储库,我已经在节点中创建了应用程序,并使用客户端id和客户端机密,我能够读取机密。但是现在客户不想使用客户id和客户机密,而是使用AZURE的用户名和密码来访问程序中的keyvault。它是一个没有MFA的keyvault访问的专用用户。 我不确定我们是否可以从节点JS使用用户名和密码访问keyvault。敬请建议。 谢谢